Является ли следующий код безопасным или приводит к неопределенному поведению в C++ 03?Можно ли инициализировать элемент с помощью члена, инициализированного ранее в списке инициализаторов?
class Aries {
public:
Aries() : Taurus("foo") , Leo(Taurus + "bar") {}
private:
string Taurus;
const string Leo;
};
Этот код, очевидно, является урезанной версией моей реальной проблемы.
РедактироватьTaurus
было объявлено до Leo
в декларации класса. Мне известно, что инициализация происходит в порядке инициализации в объявлении класса (а не в списке в списке инициализаторов.)
Этот код имеет безопасное, четкое поведение, но только потому, что 'Taurus' является _declared_ первым. – ildjarn
@ildjarn Да, я знаю, что инициализация происходит в порядке объявления в классе, а не в порядке в списке инициализаторов. Спасибо, что поняли это. –
Будучи в безопасности, я бы не рекомендовал его. Некоторые комментарии рядом с объявлениями переменных будут очень хорошими. –