c++ - 为什么这段代码会调用复制构造函数?

标签 c++ copy-constructor

我是 C++ 菜鸟,所以我不明白为什么 Logger.cpp 中的行调用复制构造函数...

记录器.h:

class Logger {
    public:
    Logger();
    ~Logger();
};

Logger LOGGER;

记录器.cpp:

Logger LOGGER = Logger(); // Copy constructor here

最佳答案

语句 Logger() 创建一个匿名临时对象。

LOGGER = Logger() 将匿名临时对象复制到对象 LOGGER 中。拷贝 构造函数 避免了将 LOGGER 构造为临时拷贝以外的东西。

允许编译器优化掉这个拷贝,但这不是必须的。更多 here.

如果你想直接构造对象,就说Logger LOGGER;

关于c++ - 为什么这段代码会调用复制构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20662618/

相关文章:

c++ - 初始化顺序问题

c++ - 解析 proc/pid/cmdline 获取函数参数

c++ - 使用增强几何适应几何对象模型的问题

c++ - std::mutex 作为类成员,将类对象存储到容器中

c++ - 保证复制省略是否适用于函数参数?

c++ - 初始化对象时复制构造函数/赋值运算符混淆

PHP PDO_ODBC配置: error: C compiler cannot create executables

C++ 深拷贝构造函数

C++:何时隐式复制类?

c++ - 创建没有复制构造函数的std::vectors的std::vector