gpt4 book ai didi

C++ 标准 : why are some "orders" defined and some not?

转载 作者:行者123 更新时间:2023-11-28 07:11:24 24 4
gpt4 key购买 nike

  1. 有一个类,它的成员的初始化顺序在构造函数中被严格定义(可能允许成员之间的依赖关系,就像这个 question - 但我认为这更多是一个设计问题,我可以想象循环依赖)。
  2. 在进行函数调用时,未定义参数计算的顺序,我认为这是为了 C 兼容性。
  3. 我们对以下“可怕的钻石”问题有一个错误:

    struct A {virtual void Print() {}};
    struct B: virtual public A {virtual void Print() {}};
    struct C: virtual public A {virtual void Print() {}};
    struct D: public B, public C {};

    编译器不知道选择哪个版本,顺序定义不明确。为什么不使用此 question 中定义的“从左到右的深度优先分辨率顺序” (没有令人信服的答案),即选择 B 而不是 C?

那么为什么会有这些不同的方法呢?为什么对 1 而不是 3 有严格的顺序?保持 1 未定义不是更简单吗?或者 2 简单地定义为从左到右?

最佳答案

这些是非常不同的情况,需要进行各种权衡。在每种情况下你都必须考虑

  • 这些情况多久发生一次?
  • 任意选择产生意想不到的后果的可能性有多大?
  • 明确指定何时需要特定订单有多容易?
  • 强制执行特定订单会导致哪些性能损失?

这些问题的答案在每种情况下都大不相同,因此有不同的选择是很自然的。

关于C++ 标准 : why are some "orders" defined and some not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916182/

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