拷贝构造和拷贝赋值函数

对于类来说,每个类都有拷贝构造和拷贝赋值函数,即使没有自定义类的这两个函数,编译器会自动为类定义这两个函数。为什么必须为类必须定义这两个函数呢?因为自定义的类都会进行两个操作:

  1. 类对象的初始化(用一个类对象直接初始化另一个类对象)
  2. 类对象的赋值操作(用一个类对象直接赋值为另一个类对象)

拷贝构造函数

class Widget {
  public:
    Widget() {}
    Widget(const Widget& widget) {}
};

拷贝构造函数和普通的构造函数的性质是一样的。可以把它理解为带参的构造函数,要求第一个参数类型必须是该类且只有一个,但是可以有其他的默认参数。

只要对象使用该类型对象初始化,就会调用拷贝构造函数。

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top