C++默默编写并调用哪些函数

默默编写并调用哪些函数

一般情况下,编译器会为类合成下列函数:

•default构造函数
•copy构造函数:编译器生成的版本只是单纯地将来源对象的每一个non-static成员变量拷贝到目标对象
•copy assignment操作符:编译器生成的版本只是单纯地将来源对象的每一个non-static成员变量拷贝到目标对象
•析构函数:编译器生成的版本是non-virtual的
更深层次的理解(对象模型第2章、第5章)
以下情况编译器不会合成copy assignment操作符:
•含有引用成员:原因在于这种情况下,赋值的目的不明确。是修改引用还是修改引用的对象?如果是修改引用,这是被禁止的。因此编译器干脆拒绝这样的赋值行为
•含有const成员:const对象不应该修改
•父类的copy assignment操作符被声明为private:无法处理基类子对象,因此也就无法合成

上一篇:django进行数据库迁移的错误处理方法:You are trying to change the nullable field 'title' on book to non-nu


下一篇:C++尽可能使用const