Безопасно ли привязать ссылку к еще не созданному объекту в C ++?

Рассмотрим этот пример кода:

class Base {
public:
    Base( string& _object ) : object( _object ) {}
private:
    string& object;
};

class Derived: public Base {
public:
    Derived() : Base( object ) {}
private:
   string object;
};

Очевидно, сначала создается Base , и ему передается ссылка на еще не построенный объект.

Память выделяется для всего объекта Derived , поэтому Derived :: object находится в легально доступной памяти, только его конструктор не запущен. Base :: Base () не вызывает никаких методов переданного объекта, только сохраняет ссылку. Работает в Visual C ++ 9.

Безопасно ли это согласно стандарту C ++?

20
задан sharptooth 27 January 2011 в 11:23
поделиться