gpt4 book ai didi

c++ - 为什么隐式生成的构造函数(等)比用户定义的(普通的)构造函数更有效?

转载 作者:可可西里 更新时间:2023-11-01 15:11:07 27 4
gpt4 key购买 nike

我读了这个article今天早上来自 D. Kalev 关于新的 c++11 功能“默认和删除的功能”,并且无法理解关于性能的部分,即:

the manual definition of a special member function (even if it's trivial) is usually less efficient than an implicitly-defined one.

通过谷歌搜索寻找答案,我找到了另一个 article同一作者:

the synthesized constructor and copy constructor enable the implementation to create code that's more efficient than user-written code, because it can apply optimizations that aren't always possible otherwise.

没有解释,但我不时读到类似的说法。

但是怎么写的:

class C { C() = default; };

可以比

更有效率
class C { C(){} };

?我认为编译器足够聪明,可以检测到这种情况并对其进行优化。换句话说,当编译器看到 =default 而不是 {}(void body 函数)时,它如何更容易优化?

编辑:问题被编辑为添加“c++11”标签,但这个问题仍然在 c++03 上下文中:只需替换 class C {C()=default;}; by class C {};,所以不是真正的 c++11 特定问题。

最佳答案

你问,那是怎么回事

class C { C() = default; };

可以比

更有效率
class C { C(){} };

好吧,两个构造函数什么都不做,所以谈论那个例子的效率是没有意义的。

但更一般地说,例如一个复制构造函数,可以想象一次复制一个 POD 项将不会被简单的优化器识别为可优化,而对于自动生成,它可能只执行一个 memcpy。谁知道。这是一个实现质量问题,我也可以很容易地想象相反

因此,衡量是否重要。

干杯,

关于c++ - 为什么隐式生成的构造函数(等)比用户定义的(普通的)构造函数更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com