打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
UC头条:C 中构造函数调用规则
userphoto

2023.06.29 山西

关注

默认情况下,c++编译器至少给一个类添加3个函数

默认构造函数(无参,函数体为空)

默认析构函数(无参,函数体为空)

默认拷贝构造函数,对属性进行值拷贝

构造函数调用规则

1.如果用户定义了有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造函数

2.如果用户定义拷贝构造函数,c++不会再提供其他构造函数

验证编译器是否会自动提供拷贝构造函数:

1.class

点击加载图片

如果将15~19行代码删掉,再次调用test01函数时,编译器会自动给我们提供拷贝构造函数,这个函数内只会执行“m_Age=p.m_Age;”这行代码,此时控制台会输出以下内容:

点击加载图片

1.如果我们写了有参构造函数,编译器就不再提供默认构造,依然提供拷贝构造

1.classP

当编译器执行这段代码时,由于这段代码写了有参构造函数,而在test02中“PersonP”没有提供参数,编译器也不提供默认构造函数,因此代码会出错

点击加载图片

仍然使用上述代码,但对test02进行修改,这样代码就可以正常运行了,Personp2(p);是为了测试编译器是否会提供拷贝构造函数

1.voidtest

2.如果我们写了拷贝构造函数,编译器就不会再提供其他普通构造函数了,用下面这段代码来做验证:

1.classPers

此时执行这段代码编译器会报错

点击加载图片

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
3. 类
内联函数(inline)总结
c++中类的默认构造函数,析构函数,拷贝构造函数
两个比较容易混淆的概念:Default Memberwise Initialization和Bitwise Copy
C 学习笔记——继承和组合
http://www.oschina.net/question/129540
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服