可能的重复:
构造函数调用机制
为什么使用空括号调用不带参数的构造函数会出错?
为什么这段代码可以省略 A 的所有副本?
#include <iostream>
class A
{
public:
A() {}
A(const A&) { std::cout << "Copy" << std::endl; }
};
class B
{
public:
B(const A& a_) : a(a_) {}
private:
A a;
};
int main()
{
B b(A());
}
这段代码显然不复制A
,并且在 ideone 的 gcc 3.4 下不输出任何内容。