Qt4.7のデフォルトのコンストラクタ


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の値を書く必要はありません.
 
 
 
「デフォルトのパラメータは、関数パラメータテーブルの一番右(末尾)のパラメータでなければなりません.
2つ以上のデフォルトの実パラメータを持つ関数を呼び出す場合、パラメータテーブルの一番右のパラメータではない場合は、そのパラメータの右のすべてのパラメータも省略します.
デフォルトのパラメータは、関数名が最初に表示されたときに指定する必要があります.通常、関数のプロトタイプにあります.
 
たとえば次の関数
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は値を与えずにエラーとなる.これらのパラメータはすべて1つ1つ対応している.
 
 
 
参考記事:
C/C+--C++のデフォルトパラメータとその二義性

QTコントローラ内*parent