class A { public: A(); //默认构造 A( A& a ); //copy构造 const A& operator=( const A& a ); //赋值操作符 }; //调用测试 A a1; //默认构造 A a2( a1 ); //copy构造 A a3 = a2; //copy构造 a2 = a3; //赋值操作符 //对3、4的解释: // //3. 如果有对象被定义,那么肯定会调用构造 // //4. 没有对象被定义时,就会调用赋值操作符 [ copy构造 ] void dost(A a); A a; dost(a); //这里a对象是复制方式调用的dost函数 //他是由A的copy构造来完成的 //所以传值调用就意味着会调用copy构造 //所以实际运用中还是推荐使用传引用的方式调用(但不要返回局部对象的引用!)
原文:http://www.cnblogs.com/codetask/p/5616980.html