我正在做对吗?这是我的代码高度简化的版本:在初始化列表中初始化引用对象成员
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