将构造函数设为私有的为何用处
class A
{
public: class B;
private:
int val;
A(int a=0):val(a){} //私有构造函数
};
class A::B
{
A a;
public:
B(int p=0):a(p){}
};
[最优解释]
用处可大了,构造函数为私有,因此无法直接声明变量。于是这个类就可以有下面的功能:
1. 重载new函数,哈,这个类变成了只能在堆上创建,不能在栈上创建~
2. 可以用来解决C++中有名的单例模式了。
3. 可以定制类的对象个数。
[其他解释]
http://wenku.baidu.com/view/02ad645c804d2b160b4ec08c.html
[其他解释]
这不很明显嘛,避免在类外定义对象
int main()
{
A a; // 错误
return 0;
}
singleton模式的实现一般也是私有构造函数,自己搜
[其他解释]
可以看一下MoreEffectiveC++,这样做可以限制对象的产生。禁止产生对象,或者限制对象产生的个数。
[其他解释]
典型应用:实现单例
[其他解释]
防止在本类作用域外实例化本类对象。
[其他解释]
推荐 more efective C++, 上面有解释
[其他解释]
太抽象,举个例吧
[其他解释]
求个电子版的地址
[其他解释]
另如何定制类的对象个数
[其他解释]
不知该瞧哪个知识点?