C++构造函数是否一定要在public: 中定义?

来源:百度知道 编辑:UC知道 时间:2024/05/30 07:24:25
我看书中所有的构造函数都在public: 中定义,可不可以在private:中定义?

不一定, 你也可以定义在 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,私有的意义不大