c++~ 请问在类里面构造函数必须是public吗 可以定义到private吗
6个回答
展开全部
可以。
设计模式里面有个单件模式,意思是你的类只想有全局唯一的对象,不想别人再构造一个对象,那么就需要私有构造函数,这样别人一旦想构造这个类的对象就会报错。单例模式就是不允许别人构造对象,所以把构造函数设成private的。
创建完类之后,我们在使用类之前,需要对类进行初始化。定义如何对类进行初始化的成员函数就称为构造函数。构造函数在创建类类型的对象时被执行。它的工作是保证每个对象的数据成员具有合适的初始值。
扩展资料
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。
构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。默认的构造函数没有任何参数,但如果需要,构造函数也可以带有参数。这样在创建对象时就会给对象赋初始值。
类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。
析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以,但定义成private会导致此类不能直接被外部实例化。如果需要创建对象就需要提供一个static方法来访问本身的构造函数。简单例子:
class A
{
public:
static A* createInstance() {return new A();}
private:
A(){}
};
有兴趣的话可以参考一下singleton设计模式。
class A
{
public:
static A* createInstance() {return new A();}
private:
A(){}
};
有兴趣的话可以参考一下singleton设计模式。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
构造函数大都是用来创建类变量的,所以都应该是公有(public)的,如果定义为私有(private)的,只能由该类的其他函数调用,如果想用该构造函数定义类变量,则只能通过一个公有函数来进行,与其如此,还不如直接定义为公有的更为合理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-05-22
展开全部
可以,但是定义到 private,就无法用该类创建对象。
更多追问追答
追问
那再请问一下,这样定义有什么用呢
追答
至于定为 private 有什么作用,本人才疏学浅,无法回答。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询