C++类的构造函数,必须是公有的。各位认为对否?
C++类的构造函数,必须是公有的。各位认为对否?
[解决办法]
额 这个可不一定,想想单例模式就知道了。
[解决办法]
不是必须的 看看单件模式 ctor为私有的
[解决办法]
私有完全没问题啊
[解决办法]
一般公有
[解决办法]
++
[解决办法]
构造私有是为了实例化有限个数的对象。!
class OnlyCls
{
public:
static OnlyCls* CreateObject()
{
// 创建一个WonderfulClass对象并返回其指针
return (new OnlyCls);
}
private:
OnlyCls() { }
};
int main()
{
OnlyCls *pOnlyCls = OnlyCls::CreateObject();
//use pOnlyCls
delete pOnlyCls;
return 0;
}
[解决办法]
再给个应用场景:
class Geometry//几何类
{
private:
int data;
protected:
Geometry(int i)
{
this->data=i;
}
Geometry(){}
public:
virtual float getArea() = 0;
};
class Cycle:public Geometry//圆类
{
private:
float radius;
public:
Cycle(float para,int i) : Geometry(i)//调用构造函数不意味着实例化
{
this->radius=para;
}
virtual float getArea()
{
return this->radius*3.1415f;
}
};
[解决办法]
未必。有些情况下,必须将构造函数设为private的,比如
1. 在实现Singleton设计模式的时候;
2. 在想屏蔽编译器为类生成的缺省构造函数的时候;
... ...