effective c++ 5: Know what functions C++ silently writes and calls

编译器会自动为一个类声明一个copy构造函数,一个copy assignment操作符和一个析构函数(如果没有自己声明这些函数的话)。如果没有声明任何构造函数,c++也会声明一个default构造函数。

当这些函数需要被调用的时候,才会被创建。

default构造函数和析构函数中一般是调用base classes和non-static成员变量的构造函数。编译器自动产生的析构函数为non-virtual,除非这个class的base class自身声明有virtual析构函数。

copy构造函数和copy assignment操作符只是将来源对象的每个non-static成员变量拷到目标对象里。但是假如说来源对象的non-static成员变量是个引用类型,那么编译器就会拒绝生成一个copy assignment操作符,因为不能改变引用指向的对象。如果有const成员变量也是如此。

如果某个base class将其copy assignment操作符声明为private,那么编译器也拒绝为它的derived classes生成copy assignment操作符。

转载于:https://www.cnblogs.com/parapax/p/3643626.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值