1

私は初心者で、オブジェクトの作成とコンストラクターの関係について基本的な疑問を持っています。

プログラム-1

 #include<iostream>
 using namespace std;
 class xxx{
     private: int x;
     public: xxx(){cout<<"constructer is called"<<endl;}
 };
 int main(int argc, char *argv[])
 {
     xxx x1;        //Constructor is called
     return 0;
 }

出力コンストラクターが呼び出されます

プログラム-2

 #include<iostream>
 using namespace std;
 class xxx{
     private: int x;
     public: xxx(){cout<<"constructer is called"<<endl;}
 };
 int main(int argc, char *argv[])
 {
     xxx x1();        //Constructor xxx() is not called.
     return 0;
 }

出力 - 空白の 情報は非常に役立ちます

4

2 に答える 2

4

これ:

xxx x1(); 

は関数宣言 (x1引数を取らず、 を返す関数が呼び出されるxxx) であり、変数宣言ではないため、 のインスタンスxxxは作成されません (したがって、コンストラクター呼び出しはありません)。

于 2013-04-19T20:50:25.983 に答える
2
 xxx x1;

は class のオブジェクトを作成するxxxため、 class のデフォルトのコンストラクターを呼び出しますxxx

xxx x1();

は、クラスのオブジェクトを返す関数を宣言し、xxx関数名はx1であり、パラメーターを取りません。これは class のインスタンス化ではないxxxため、呼び出されるコンストラクターはありません。

于 2013-04-19T20:50:50.593 に答える