Я правильно делаю?Это очень упрощенная версия моего кода:
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
создает свой собственный экземпляр Logger
, используя std::cout
.
При вызове Driver(Logger)
экземпляр должен использовать уже существующий экземплярLogger
передано в качестве ссылки.
Приведенный выше код компилируется с использованием g ++.Хотя я понимаю, что происходит при звонке Driver()
, я не понимаю, что происходит при звонке Driver(Logger)
.Logger
не имеет конструктора, который принимает ссылку на Logger
в качестве аргумента («конструктор копирования»).Так что же выполняется при вызове Driver(Logger)
?