Рассмотрим следующий (упрощенный) ситуации:Могут ли переменные-члены использоваться для инициализации других членов в списке инициализации?
class Foo
{
private:
int evenA;
int evenB;
int evenSum;
public:
Foo(int a, int b) : evenA(a-(a%2)), evenB(b-(b%2)), evenSum(evenA+evenB)
{
}
};
Когда я Foo, как создании экземпляра этого:
Foo foo(1,3);
затем evenA равно 0, evenB равно 2, но будет evenSum быть инициализирована до 2?
Я пробовал это на своей нынешней платформе (iOS) и, похоже, работает, но я не уверен, что этот код переносимый.
Благодарим за помощь!
Это один из опасных углов в C++. – iammilind
Codepad - отличное место, чтобы проверить такие вещи: http://codepad.org/uFgZpkwN –
@Agent_L: Это не скажет вам, является ли этот код переносимым. –