我正在做對嗎?這是我的代碼高度簡化的版本:在初始化列表中初始化引用對象成員
class Logger {
public:
Logger(std::ostream) { /*...*/}
};
class Driver {
public:
Driver() : m_logger(std::cout) {}
Driver(Logger& logger) : m_logger(logger) {}
private
Logger m_logger;
};
所以我Driver
類有Logger
類型的成員。當我調用無參數構造函數Driver()
時,Driver
的實例使用std::cout
創建它自己的Logger
實例。
當調用Driver(Logger)
時,實例應使用作爲參考傳遞的已存在的Logger
實例。
上面的代碼使用g ++編譯。雖然我明白撥打Driver()
會發生什麼情況,但撥打Driver(Logger)
時我不會收到什麼結果。 Logger
沒有構造函數,它接受Logger
作爲參數(「複製構造函數」)的引用。那麼撥打Driver(Logger)
時執行什麼?
你自己的'Driver'提供一個構造函數接收'Logger'參考:'驅動器(記錄器和採集器)' ,這是初始化參考成員的標準和常用方式。我不明白這個問題。 – 2012-01-13 11:09:31
你不「叫」構造函數。永遠。 – 2012-01-13 11:10:53
順便說一句,你不能複製流。 – 2012-01-13 11:11:21