5:了解c++默认编写并调用哪些函数

本文探讨了编译器自动生成的构造函数(默认构造函数、复制构造函数、赋值构造函数和析构函数),以及当显示声明构造函数时如何影响默认构造函数的生成。特别关注了reference和const成员属性对复制构造函数和赋值构造函数生成的影响,以及当基类的构造函数声明为private时,如何导致编译器无法自动生成这些构造函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下四个函数编译器会帮助自动生成,1、default构造函数 2、copy构造函数 3、赋值构造函数 4、析构函数

但是如果你显示声明了一个构造函数,default构造函数将不会被自动生成.这样你就不能再使用default构造函数了。

至于copy构造函数和赋值构造函数,如果所声明的类中有reference或者const成员属性时,也编译器也不会自动生成这两个构造函数,因为这两个函数都是把objA对象中的属性赋值到objB对象的相应属性(objA和objB是同一个类生成的不同对象),但是reference变量不能再引用其他的对象,而const变量的值是不能改变的,所以编译器就没法使用copy构造函数和赋值构造函数了,当然,设计者自己显示地声明copy构造函数和reference除外,因为设计者可以自定义那些赋值操作。

此外,如果base class的reference构造函数和copy构造函数声明为private时,编译器也不会自动生成copy构造函数和赋值构造函数,因为在赋值时必须调用base class的赋值函数,但是这个函数已经被声明为private了,所以编译器对于这种情况也无能为力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值