不一定, 你也可以定义在 protected/private 中, 但如果这样地话, 你就没办法实例化这个类了! 有的时候, 会要求禁止用户创建类的实例就会这么用的, 比如设计模式中有一个单件模式, 就是限制一个类只能有一个实例的:
class singleton {
private:
singleton() {}
~singleton() {}
public:
static singleton &get_instance(void)
{
static singleton _inst;
return _inst;
}
public:
void foo(void)
{
}
};
这样可以防止用户创建自己的实例(编译会报错), 而用户想访问 singleton 类地话可以通过 singleton::get_instance().foo(); 来访问!
构造函数属于某个类,private,public 都行,
一般默认private,只能被该类实例化对象时使用。所以一般private
构造函数不一定是public,有时也是私有的但是大多情况是public,私有的意义不大