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

C++ 调用函数初始化ctor列表中的类是否安全?,c++,constructor,initialization,C++,Constructor,Initialization,我有一个角度类,我想初始化为一个随机值。角度构造函数可以接受random()函数中的int。将此呼叫放入ctor列表是否安全: foo::foo() : Angle(random(0xFFFF)) {...} 或者我必须在构造器的主体中进行吗 foo::foo() { Angle = Angle(random(0xFFFF)); ...} 如果重要的话,foo类是从另一个类派生的,并且确实有虚拟方法。此外,我们的应用程序中不允许任何异常处理。如果random无法抛出(很难相信它能抛出),那么

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

foo::foo() : Angle(random(0xFFFF)) {...}
或者我必须在构造器的主体中进行吗

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

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

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

这就是我想要的。谢谢即使random可能引发异常,也有一个名为函数try block的特殊构造,允许您捕获异常。同样,在我的情况下,这并不重要,因为我的应用程序中完全禁用了异常。