考慮下面的代碼示例:將引用綁定到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++標準它是安全的嗎?
好問題。我已經在我的一個項目中完成了這項工作,並且工作正常。從未見過任何問題。但我想知道它是否「安全」。 – Nawaz 2011-01-27 11:31:54