Qt4.7中 默认的构造函数

本文深入探讨了Qt编程中构造函数的基本概念,特别关注默认构造函数的作用以及如何正确使用默认参数避免二义性。通过具体实例解释了如何在Qt类中初始化父类对象,并强调了参数顺序在函数调用中的重要性。

初学Qt,发现每个例子自带的构造函数:

Network.h头文件

 

#include "NetServerThread.h"

class Network : public QObject
{
    Q_OBJECT

public:
    Network(QObject *parent = 0); //因为QObject *parent为默认参数已经赋值,所以此构造
                                                 //函数为 Network类的默认构造函数
    ~Network();
};

 Network.cpp

 

 

#include "NetServerThread.h"

Network::Network(QObject *parent)//这里写的构造函数的参数是为了初始化QObject参数parent,
   :QObject(parent)       //这样它可以继承父类QObject初始化的所有数据。                                                  
{                              //该默认构造函数,实例化类时候只需要 Network network;
     qDebug()<<"构造器开始";
    //初始化对象
    init();

}

Network::~Network()
{
}

 

 实例化Network类的时候,只需要

Network network;

即可调用默认构造函数,不需要写默认参数QObject* parent的值

 

 

 


“默认实参必须是函数参数表中最右边(尾部)的参数
调用具有两个或多个默认实参数的函数时,如果省略的不是参数表中最右边的参数,则该参数右边的所有参数也应省略
默认实参应在函数名第一次出现时指定,通常是在函数原型中”

 

 比如说下面的函数

int fun(int a,int b,int c=3)

{


}

c就是指定的默认实参,通常在函数原型中指定。这里给了3作为默认参数。用平常的时候调用这个函数fun(4,5,6);那么就是a=4,b=4,c=6。如果这样调用fun(1,2)那么就是a=1,b=2,c=3,这里c没有指定,因为c是默认实参,已经有了默认值,这里c就是采用默认值3。

为什么默认实参必须是函数参数表中最右边的参数。把上面的函数改下

int fun(int a=3,int b,int c)

{}

这样调用fun(1,2),这样就是a=1,b=2,而c根本就没有赋到值,就出错了。这些参数都是一一对应的。

 

 

 

参考文章:

C/C++--C++默认参数及其所引起的二义性

QT构造函数中*parent

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值