复制构造函数:具有一般构造函数的所有特性,其形参是本类的对象的引用。
其作用是使一个已经存在的对象(由复制构造函数的参数指定),去初始化同类的一个新对象。
形参必须是引用。如果不是引用,则形参与实参绑定时也需要调用复制构造函数,造成无限循环,永远不可能调用成功。
普通构造函数是在对象创建时被调用,而复制构造函数在以下3种情况下都会被调用:
#include<iostream>
using namespace std;
class Animal{
private:
int height;
float weight;
public:
Animal(int h,float w){
height=h;
weight=w;
}
Animal(Animal &an){
height=an.height;
weight=an.weight;
cout<<"---复制构造函数----"<<endl;
}
int getH();
int getW();
};
int Animal::getH(){return height;}
int Animal::getW(){return weight;}
void diagnose(Animal a){
if(a.getW()>200)
cout<<"too weight"<<endl;
else
cout<<"health