未声明的复制构造函数是否自动内联?

Meh*_*dad 3 c++ inline copy-constructor default-copy-constructor c++03

未声明(自动生成)的复制构造函数是否自动标记为inline

如果是这样,如果我不希望它们被标记为inline,这是否意味着我必须手动定义一个并手动复制我需要的每个成员(假设我没有使用C++ 11,所以没有= default从中获利)?

Jam*_*nze 8

他们被视为被宣布inline(这并不一定意味着他们将被内联).是的,在预C++ 11中,防止它们内联的唯一方法是手动声明和定义它们,在初始化列表中显式复制每个成员和每个基类.

  • @KerrekSB:如果问题是添加 `= default` 是否隐式标记为 `inline`,则取决于它出现的位置。如果它在类定义内,它将隐式地为“内联”,但您也可以*默认* 类定义之外的函数定义,在这种情况下,只有将其标记为内联(例如: `struct X { X(); }; X::X() = 默认值;`) (2认同)

Ker*_* SB 6

是.从C++ 11,12.8/11:

隐式声明的复制/移动构造函数是inline public其类的成员.

如果你想更熟悉复制和移动构造函数,我强烈建议阅读所有12.8.