用户定义的默认构造函数效率较低吗?

Pap*_*ter 8 c++ constructor defaulted-functions

几天前,在阅读标准C++新闻时,我读过有关C++ 11中默认函数的帖子,在那篇文章中提到用户定义的构造函数效率低于编译器生成的函数:

用户定义的默认构造函数的效率低于编译器隐式定义的默认构造函数.

继续阅读,有一个例子,用户定义的构造函数被标记为默认值,然后说:

显式默认构造函数比手动编程的默认构造函数更有效.

我不明白这些断言,所以我想知道:

  • 为什么用户默认构造函数(或特殊成员函数)的效率低于编译器隐式定义的那个?
  • 如何通过明确默认构造函数(或特殊成员函数)来提高效率?
  • 选择默认构造函数(或特殊成员函数)以及效率如何影响此决策时必须遵循哪些指导原则?

Mar*_*k B 4

我认为更好的说法是用户定义的默认构造函数可能比编译器生成的效率低。

例如,当它在内部生成默认构造函数时,编译器可能能够做出用户定义构造函数无法做出的假设和优化(会想到副作用)。

另请记住,用户定义的默认构造函数可以执行与默认构造其所有成员完全不同的工作,从而导致其效率较低(但也更正确)。然而,您提供的链接中似乎并非如此。