条款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成员是不合法的,所以编译器不知道如何在它自己生成的赋值函数面对他们。
本文介绍在C++中当定义一个空类时,编译器会自动生成哪些默认函数,包括默认构造函数、拷贝构造函数、析构函数及赋值运算符重载,并强调了在特定情况下程序员需要手动定义这些函数。
368

被折叠的 条评论
为什么被折叠?



