c++~ 请问在类里面构造函数必须是public吗 可以定义到private吗

 我来答
yesyes科
2020-05-13 · TA获得超过2.6万个赞
知道答主
回答量:608
采纳率:0%
帮助的人:8.9万
展开全部

可以定义到private,但定义成private会导致此类不能直接被外部实例化,解决方法如下:

1、首先拷贝构造函数是一种特殊的构造函数,函数名与类名相同,它的一个参数必须是本类型的一个引用变量,无函数类型、返回值。

2、对象通过另一个对象初始化。

3、运行如下图所示。

4、接着输入函数的参数为类对象。

5、运行结果,如下图所示,就完成了。

娱乐小八卦啊a
高粉答主

2020-05-13 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117824

向TA提问 私信TA
展开全部

可以。

设计模式里面有个单件模式,意思是你的类只想有全局唯一的对象,不想别人再构造一个对象,那么就需要私有构造函数,这样别人一旦想构造这个类的对象就会报错。单例模式就是不允许别人构造对象,所以把构造函数设成private的。

创建完类之后,我们在使用类之前,需要对类进行初始化。定义如何对类进行初始化的成员函数就称为构造函数。构造函数在创建类类型的对象时被执行。它的工作是保证每个对象的数据成员具有合适的初始值。

扩展资料

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。

构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。默认的构造函数没有任何参数,但如果需要,构造函数也可以带有参数。这样在创建对象时就会给对象赋初始值。

类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。

析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
the_jebel
推荐于2018-03-29 · TA获得超过124个赞
知道答主
回答量:62
采纳率:0%
帮助的人:65.6万
展开全部
可以,但定义成private会导致此类不能直接被外部实例化。如果需要创建对象就需要提供一个static方法来访问本身的构造函数。简单例子:
class A
{
public:
static A* createInstance() {return new A();}
private:
A(){}
};

有兴趣的话可以参考一下singleton设计模式。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoalyg
2012-05-22 · TA获得超过4178个赞
知道大有可为答主
回答量:2356
采纳率:100%
帮助的人:2353万
展开全部
构造函数大都是用来创建类变量的,所以都应该是公有(public)的,如果定义为私有(private)的,只能由该类的其他函数调用,如果想用该构造函数定义类变量,则只能通过一个公有函数来进行,与其如此,还不如直接定义为公有的更为合理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-05-22
展开全部
可以,但是定义到 private,就无法用该类创建对象。
更多追问追答
追问
那再请问一下,这样定义有什么用呢
追答
至于定为 private 有什么作用,本人才疏学浅,无法回答。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式