条款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?