首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++种的构造函数,必须是公有的。各位认为对否

2013-04-20 
C++类的构造函数,必须是公有的。各位认为对否?C++类的构造函数,必须是公有的。各位认为对否?[解决办法]额 这

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;
}
};

[解决办法]
引用:
C++类的构造函数,必须是公有的。各位认为对否?


未必。有些情况下,必须将构造函数设为private的,比如
1. 在实现Singleton设计模式的时候;
2. 在想屏蔽编译器为类生成的缺省构造函数的时候;
... ...

热点排行