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

问题描述:

我有我想要初始化为随机值的角度类。 Angle构造函数可以从random()函数接受int。将此调用放置在ctor列表中是否安全:调用函数来初始化ctor列表中的类是否安全?

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

还是必须在构造函数的主体中执行此操作?

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

如果它的事项,Foo类是从另一个类派生确实有虚方法。另外,我们的应用程序不允许有异常处理。

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

+0

这就是我正在寻找的。谢谢! – 2010-04-21 03:38:40

+0

即使随机可能会抛出异常,也有一个称为function-try块的特殊构造,它允许您捕获异常。 – 2010-04-21 03:45:18

+0

再次,在我的情况下,这并不重要,因为在我的应用程序中,完全禁用了例外。 – 2010-04-21 04:02:43