您的位置:首页 > 编程语言 > C语言/C++

《Effective C++》条款05

2017-10-19 17:33 197 查看
条款05:了解C++默默编写并调用了哪些函数

当你写了如下的一个空类的时候:

class Test{};


其实编译器默默为你提供了以下一些函数,就相当于你写了如下的代码:

class Test
{
public:
Test();    //默认构造函数
Test(const Test &right);    //拷贝构造函数
~Test();   //析构函数(编译器产生的析构函数是非虚的)
Test& operator=(const Test &right);    //赋值运算符重载
};


注意:

(1)当你声明了一个构造函数,编译器于是不再为它创建默认构造函数

(2)当你打算在一个内含引用成员的class内支持赋值操作,你必须自己定义赋值运算符重载。

(3)面对内含const成员的class,更改const成员是不合法的,所以编译器不知道如何在它自己生成的赋值函数面对他们。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: