//拷贝构造函数 //拷贝构造函数是一种特殊的构造函数,其形参为本类的对象引用。 //作用:使用一个对象(参数指定的对象),去初始化一个正在被建立的同类型对象 //class 类名 //{ //public : // 类名(形参); //构造函数 // 类名(类名 &对象名);//拷贝构造函数 // ... //}; //类名:: 类名(类名 &对象名) //拷贝构造函数的实现 //{函数体} //如果程序员没有为类声明拷贝初始化构造函数,则编译器自己生成一个拷贝构造函数。 //这个构造函数执行的功能是:用作为初始值的对象的每个数据成员的值,初始化将要建立的对象的对应数据成员。 class Point { public: Point(int xx = 0,int yy = 0) { X=xx; Y=yy; } Point(Point& p); //拷贝构造函数 int GetX() {return X;} int GetY() {return Y;} private: int X,Y; }; Point::Point(Point& p) { X = p.X; Y = p.Y; cout<<"拷贝构造函数被调用"<<endl; } //(1)当用类的一个对象去初始化该类的另一个对象时系统自动调用它实现拷贝赋值。 int main(void) { Point A(1,2); Point B(A); //拷贝构造函数被调用 cout<<B.GetX()<<endl; return 0; } //(2)若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。例如: void fun1(Point p) { cout<<p.GetX()<<endl; } int main() { Point A(1,2); fun1(A); //调用拷贝构造函数 return 0; } //(3)当函数的返回值是类对象时,系统自动调用拷贝构造函数。例如: Point fun2() { Point A(1,2); return A; //调用拷贝构造函数 } int main() { Point B; B = fun2(); return 0; }