代码之家  ›  专栏  ›  技术社区  ›  Michael Dorgan

调用函数初始化ctor列表中的类是否安全?

  •  2
  • Michael Dorgan  · 技术社区  · 14 年前

    我有一个要初始化为随机值的角度类。角度构造函数可以接受random()函数中的int。是否安全地将此呼叫放入ctor列表中:

    foo::foo() : Angle(random(0xFFFF)) {...}
    

    或者我必须在构造器的主体中这样做?

    foo::foo() { Angle = Angle(random(0xFFFF)); ...}
    

    如果重要的话,foo类是从另一个类派生的,并且有虚拟方法。此外,我们的应用程序不允许异常处理。

    1 回复  |  直到 9 年前
        1
  •  4
  •   Johannes Schaub - litb    14 年前

    如果 random 不能扔(很难相信它能扔),这没有问题。构造函数初始值设定项中允许有副作用。如果只需要很少的代码,那么在那里进行任何初始化都是很好的实践。