c++ - 为什么在这种情况下没有调用复制构造函数

标签 c++ constructor copy-constructor most-vexing-parse

说,我有一个A类

现在做的时候

A a(A()); 

到底发生了什么?

最佳答案

尽管出现,A a(A()); 不是对象定义。相反,它声明了一个名为 a 的函数,该函数返回一个 A 并接受一个指向函数的指针,该函数不接受任何内容并返回一个 A

如果你想要一个对象定义,你必须添加另一对括号:

A a((A()));

关于c++ - 为什么在这种情况下没有调用复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10803449/

相关文章:

C++0x 初始化列表示例

c# - 定义构造函数中将使用哪种类型

javascript - 对 JavaScript 原型(prototype)继承与构造函数感到困惑

c++ - 无法理解编译器在复制构造函数上引发的错误消息

c++ - 复制构造函数和赋值运算符

c++ - 输出到文件 C++

c++ - auto 和 decltype(auto) 类型推导示例

c++ - 什么是三法则?

c++ - 在具有专有 Nvidia 驱动程序的 Linux 上,多个 OpenGLX 渲染上下文失败

c++ - 从 C++ 中的另一个源访问类,初始化构造函数时出现问题