Con*_*501 6 c++ constructor class most-vexing-parse
我有一个问题:ClassName instance()在C++中创建类的实例时使用了什么构造函数?
例:
#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;
}
谢谢 !
tom*_*asz 12
整蛊!您可能希望编译失败,因为默认构造函数是私有的.但是,它编译并且不会创建任何内容.原因?
Test instance_1();
......只是一个功能声明!(它返回Test并且什么都不带.)
该语句Test instance_1();根本不调用构造函数,因为它没有定义变量 - 相反,它声明了一个instance_1返回类型对象的函数Test.要使用0参数构造函数创建实例,您可以使用Test instance_1;.