构造函数可以在C++中是私有的吗?如果是,那我们怎么称呼呢?
class Puma
{
int a = 10;
Puma()
{
cout << a;
}
};
int main()
{
Puma pum;
return o;
}
Run Code Online (Sandbox Code Playgroud)
这个程序可以运行吗?如果没有那么我们如何调用Puma()构造函数,因为它是私有的?
Ben*_*ley 19
是的,构造函数可以是私有的.您可以使用成员函数(静态或非函数)或朋友函数来调用它.
class Puma
{
public:
static Puma create(int a) { return Puma(a); }
private:
int age;
Puma(int a) :age(a) {}
friend Puma createPuma(int a);
};
Puma createPuma(int a) { return Puma(a); }
Run Code Online (Sandbox Code Playgroud)
有关可能的用例,请参阅Factory Pattern或Named Constructor Idiom.