c++ 复制构造函数和赋值函数

时间:2021-11-12 12:10:32

c++ 自动提供了下面这些成员函数

1默认构造函数

2.复制构造函数

3.赋值操作符

4.默认析构函数

5.地址操作符

赋值构造函数copy construtor 用于将一个对象复制到新创建的对象中,也就是说,它用于初始化过程中,而不是常规的赋值过程中。

类的copy sconstrutor函数原型通常如下:

ClassName(const ClassName & );

对于复制构造函数,需要知道2点:何时调用和有何功能。

新建一个对象并将其初始化为同类现有对象时,复制构造函数都将调用。这在很多情况下都有可能发生,最常见的情况是将新对象显示地初始化为现有的对象,例如motto是一个String对象,则下面4中声明都将调用copy construtor:

string ditto(motto)

string metto=motto;

string also=string(motto)

string *pstr=new string(motto)

其中中间的2中声明可能会使用copy constructor直接创建metto和also,也可能使用复制构造函数生成一个临时对象,然后将临时对象的内容赋给metto和also,这取决于具体的实现。最后一个声明使用metto初始化一个匿名对象,并将新对象的地址赋给pstr指针。

每当程序生成了对象副本时,编译器都将使用复制构造函数。具体地说,当函数按值传递对象或函数返回对象时,都将使用copy consturor.记住:按值传递意味着创建原始变量的一个副本