在我的研究中,我了解到如果你想阻止用户调用一个类的默认构造函数,你可以将其设为私有:
class Person
{
public:
Person(const Person&);
~Person();
private:
Person(); //Any call to this will cause a compiler error.
};
我不明白的是,当我创建一个未初始化的类数组时,它给了我一个语法错误,说它是私有的:
Person * ptr; //Works just fine.
Person arr[1]; //Syntax error: 'Person::Person()' is private
这会让我相信它会在创建数组时尝试调用默认构造函数。但这对我来说没有任何意义,因为我实际上并没有创建任何真实的对象。