我有一个问题:在C ++中使用ClassName instance()
创建类的实例时使用了什么构造函数?
示例:
#include <iostream>
using namespace std;
class Test
{
private:
Test()
{
cout << "AAA" << endl;
}
public:
Test(string str)
{
cout << "String = " << str << endl;
}
};
int main()
{
Test instance_1(); // instance_1 is created... using which constructor ?
Test instance_2("hello !"); // Ok
return 0;
}
谢谢!
答案 0 :(得分:11)
棘手!您可能希望编译失败,因为默认构造函数是私有的。但是,它编译并且不会创建任何内容。原因?
Test instance_1();
...只是一个功能声明! (返回Test
并且不执行任何操作。)
答案 1 :(得分:7)
语句Test instance_1();
根本不调用构造函数,因为它没有定义变量 - 相反,它声明了一个名为instance_1
的函数,它返回类型为Test
的对象。要使用0参数构造函数创建实例,可以使用Test instance_1;
。