Oracle Solaris Studio 12.2:C++ 用户指南

9.3 使用缺省运算符

如果类定义不声明无参数的构造函数、复制构造函数、复制赋值运算符或析构函数,那么编译器将隐式声明它们。它们都是调用的缺省运算符。类似 C 的结构具有这些缺省运算符。编译器生成缺省运算符时,可以了解大量关于需要处理的工作和可以产生优良代码的工作。这种代码通常比用户编写的代码的执行速度快,原因是编译器可以利用汇编级功能的优点,而程序员则不能利用该功能的优点。因此缺省运算符执行所需的工作时,程序不能声明这些运算符的用户定义版本。

缺省运算符是内联函数,因此内联函数不合适时不使用缺省运算符(请参见上一节)。否则,缺省运算符是合适的:

某些 C++ 编程手册建议编写类的程序员始终定义所有的运算符,以便该代码的任何读者都能了解该程序员没有忘记考虑缺省运算符的语义。显然,该建议与以上讨论的优化有冲突。这种冲突的解决方案是在代码中放置注释以表明类正使用缺省运算符。