c++ 默默编写并调用了哪些函数:构造、析构、拷贝构造、赋值

如果你写下 class Empty{ }; 这样的一个空的class,编译器将帮我们加上默认的构造、析构、拷贝构造和赋值函数。

在这些函数需要被调用时候,编译器会将它们创建出来。

default 构造和析构主要来做调用基类 和 非静态成员的构造和析构。

注意:编译器创建的析构函数是一个非虚的。

拷贝构造和拷贝赋值操作符,编译器创建的版本只是单纯地将来源对象的每一个non-static成员变量拷贝到目标对象。

拷贝方式:对于有自己的拷贝构造(或拷贝赋值)函数的成员,调用其拷贝构造(或拷贝赋值)。对于内置类型按位拷贝。

有三种情况:①有const 成员;②有引用类型的成员(相当于const指针);③基类的拷贝赋值操作符号声明为private。

在这三种情况下,编译器无法生成默认的拷贝赋值函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值