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++ - 错误 : could not convert ‘((const MyClass*)this)->MyClass::myLabel’ from ‘QLabel* const’ to ‘QLabel’

c++ - 为什么只能在头文件中实现模板?

c++ - Having trouble importing function from C++ dll 错误 LNK 2019

c++ - 为什么我不能在我的复制构造函数中使用 std::copy?

c++ - 编译器为具有引用和常量成员的类生成的复制/赋值函数

c++ - 插入排序优化

c++ - 使用函数参数 reshape 动态数组

c++ - 哪个指针赋值更好(C++)

c++ - 为什么 "copying"复制构造函数中的引用仍然有效?

c++ - 为什么按值传递给函数和按值传递给另一个构造函数时,构造函数的调用存在差异?