测试:
class X
{
public:
X()
{cout<<"X()"< X(const X& x) { cout<<"X(const X& x)"< } X& operator=(const X&) { cout<<"="< } ~X() {cout<<"destructor"< }; void foo(X x0) { } int _tmain(int argc, _TCHAR* argv[]) { X xx; foo(xx); } 运行结果: 可以看出函数参数的传入需要调用拷贝构造函数构建一个临时对象(注:并不是构建形参,形参已经被转化为引用,不再是对象),另外临时对象在函数退出时销毁。 总结:函数形参中,对象值传递的方式都转化为临时对象和引用传递。 【1】一个类不展现“位逐次拷贝”的四种情况: (1) 这个类有member object,并且这个member object对应的Class定义了拷贝构造函数。 (2) 这个类的父类定义了拷贝构造函数。 (3) 这个类中有虚函数(包括其父类有的情况)。 (4)这个类的继承连中有虚基类。