9.5.2 Explicitly-defaulted functions

5
  • 显式默认(explicitly-defaulted)函数与隐式声明(implicitly-declared)函数统称为默认函数(defaulted functions)。实现应为这些函数([class.ctor][class.dtor][class.copy.ctor][class.copy.assign])提供隐式定义,这意味着可能将其定义为delete。非析构函数的默认预期析构函数([class.dtor])被定义为delete。既非预期析构函数亦非可用的特殊成员函数([special])的默认特殊成员函数被定义为delete
  • 若函数为用户声明且在其首次声明时未显式设置为defaultdelete,则函数是用户提供(user-provided)函数。用户提供的显式默认函数(即首次声明之后才显式设置为default的函数)在其显式设置为default时被定义;若此类函数被隐式定义为delete,则程序是非法的(ill-formed)。【注释:在首次声明后将函数声明为default,既能提供高效的执行和简洁的定义,又能为不断演进的代码库保持稳定的二进制接口 ——注释结束】