复制构造函数怎么不调用
如下面代码所示:
class A{
public:
A():num(0)
{}
A(int n):num(n)
{std::cout << "A(int n)" << std::endl;
}
A(const A &a)
{std::cout <<"copy" <<std::endl;
this.num=a.num;
return *this;
}
private:int num;
};
int main()
{A a=10;
}
输出结果为:A(int n)
为什么不调用复制构造函数呢,请高手指教?
但C++Primer中说,先调用A(int n)这个构造函数创建一个临时对象,再调用复制构造函数初始化a
[解决办法]
书没有错,编译器也没啥错,因为C++标准给予了编译器这个优化的权力。
要知道答案,得看《excecptional c++》