拷贝构造函数

it2026-09-23  17

特点

也是一种构造函数,其函数名和类名相同,没有返回值类型只有一个参数,且是同类对象的引用每个类都必须有一个拷贝构造函数,系统会提供默认构造函数,程序员也可自定义

1.自定义构造函数

一般形式: 类名::类名(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; };

2.默认拷贝函数

# include< iostream>using namespacestd;class Pointl publ ic: Point (int a, int b)( x=a; y=b; void print() ( cout«x«<""y«endl; private:intx, y;); intmain() Point P130,40, Point Dp2(p1); Point p3=p1; p1.print () ; p2 print() ; p3.print () ; return 0 ; 30 40 30 40 30 40

3.调用拷贝构造函数的3种情况

普通构造函数是在水箱创建时被调用,而拷贝构造函数在以下三种情况下都会被调用:

当用类的一个对象去初始化该类的另一个对象时 Point p2(p1); Point p3 = p1l

当函数的形参是类的对象,在调用函数进行形参和实参结合时

当函数的返回值是类的对象,在函数调用完毕将返回值(对象)带回函数调用处时。此时将调用拷贝构造函数,将此对象复制给一个临时对象并传到该函数的调用处

最新回复(0)