Безопасно ли вызывать функцию для инициализации класса в списке ctor? - PullRequest
2 голосов
/ 21 апреля 2010

У меня есть класс Angle, который я хочу инициализировать случайным значением. Конструктор Angle может принимать int из функции random (). Безопасно ли размещать этот вызов в списке ctor:

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

или я должен сделать это в теле конструктора?

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

Если это имеет значение, класс foo является производным от другого класса и имеет виртуальные методы. Кроме того, в нашем приложении запрещена обработка исключений.

1 Ответ

4 голосов
/ 21 апреля 2010

Если random не может бросить (трудно поверить, что это возможно), с этим проблем нет. Побочные эффекты разрешены в инициализаторах конструктора. Хорошей практикой является выполнение любой инициализации там, если для этого требуется только небольшой код.

...