一般形式: 类名::类名(const 类名 & 对象名) { //拷贝构造函数的函数体 }
class Point{ public: Point(int a,int b) { x = a; y = b; } Point(const Point &p) //拷贝构造函数 { x = 2 * p.x; y = 2 * p.y; } . . . private: int x,y; };普通构造函数是在水箱创建时被调用,而拷贝构造函数在以下三种情况下都会被调用:
当用类的一个对象去初始化该类的另一个对象时 Point p2(p1); Point p3 = p1l当函数的形参是类的对象,在调用函数进行形参和实参结合时
当函数的返回值是类的对象,在函数调用完毕将返回值(对象)带回函数调用处时。此时将调用拷贝构造函数,将此对象复制给一个临时对象并传到该函数的调用处
