2012年(158)
分类: C/C++
2012-11-23 16:36:40
网友评论2012-11-23 16:39:59
carr123
因为产生了3个对象,其中一个是显式的,另两个是临时的。
对象1 :A()
对象2: 因为A foo( A a )的参数不是引用,所以要产生一个栈内部的
对象
对象3: 因为foo( A a )的返回值不是引用,所以要产生一个临时的
对象
对象2和对象3是调用的拷贝构造函数,而你并没有写任何拷贝构造函数,
所以调用默认的。
注意:A& operator=( const A& ) { cout << "A=A" << endl; }
是赋值函数,不是拷贝构造函数。
这样写试试:
A::A(A& a)
{
cout<<"拷贝构造\n";
}