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;

创建类的对象xxx,因此调用类的默认构造函数xxx

xxx x1();

声明一个返回类对象的函数,xxx函数名称为x1,不带参数。它不是 class 的实例化xxx,因此没有调用构造函数。

于 2013-04-19T20:50:50.593 回答