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++ 中打印带有类的字符串?

c++ - 相当于c++中的printf

c++ - C++-字符串复制任务

c++ 17在编译时将具有已删除复制构造函数的类添加到std::vector

c++ - 创建带有和不带有 new 关键字的 C++ 对象

c++ - 传递参数、列表和复制构造函数 C++

c++ - 无法在JGrasp中编译C++

C++ |在不提供值的情况下接受用户输入

c++ - 强制 C++ 类实例在复制或分配时更改成员值

c++ - 类析构函数错误