今天看了一本很经典的书籍《Effective C++》中的条款5,感觉书中说得有点混乱,故在此整理一下,并和大家分享一下自己的学习。好,现在开始吧。这个条款可以总结为三个问题:
问题1:当我们定义一个空类的时候,C++编译器会为我们编写哪些函数呢?
问题2:这些默认函数都做了什么工作呢?
问题3:如果要对一个含有“reference成员”的类进行赋值操作,可以依赖编译器生成的赋值重构函数(operator=)吗?
问题1:当我们定义一个空类的时候,C++到底会默默为我们编写哪些函数呢?
例如写了这么一个空类:
class Empty{ };
则,C++会为我们默默地编写了4个函数:一个default构造函数、一个析构函数、一个copy构造函数、一个等号“=”重构函数:
class Empty{
public:
Empty() {......}