8

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;
}

谢谢 !

4

2 回答 2

13

棘手!您会期望编译失败,因为默认构造函数是私有的。但是,它编译并且没有创建任何内容。原因?

Test instance_1();

...只是一个函数声明!(返回Test并且什么都不带。)

于 2011-07-21T00:45:16.207 回答
7

该语句Test instance_1();根本不调用构造函数,因为它没有定义变量 - 相反,它声明了一个被调用的函数,该函数instance_1返回一个类型为 的对象Test。要使用 0 参数构造函数创建实例,您可以使用Test instance_1;.

于 2011-07-21T00:46:19.220 回答