条款05:了解 C++ 默默编写并调用哪些函数
Know what functions C++ silently writes and calls.
编译器会为类默认声明 default 构造函数、copy 构造函数、copy assignment 操作符和析构函数,并且这些函数都是 public 和 inline,但只有这些函数被调用时,编译器才会创建它们。
default 构造函数和析构函数主要是给编译器一个地方用来放置“藏身幕后”的代码,像调用 base classes 和 non-static 成员变量的构造函数和析构函数。需要注意的是编译器产出的析构函数是个 non-virtual。
copy 构造函数和 copy assignment 操作符,编译器创建的版本只是单纯地将来源对象的每一个 non-static 成员变量拷贝到目标对象。
如果声明过这些函数,编译器就不会再为它创建 default 版本。
Last updated
Was this helpful?