拷贝构造函数:在声明的过程中,通过已有的实例对其赋值
拷贝赋值构造:在声明结束以后,使用运算符“=”进行赋值
移动构造:通过某个返回值为该类的函数在声明时进行赋值(或move()函数)
移动赋值构造:在声明之后,通过某函数进行赋值(或move()函数)
拷贝构造函数
拷贝构造函数体:
T(const T&) { cout << "T(const T&) 拷贝构造:" << this << endl; } |
调用方式:
T t1; T t2 = t1; //注意,该构造方式调用的是拷贝构造函数 //======== T t3(t1); //======== T t4{t1}; |
拷贝赋值构造
函数体:
T& operator=(const T&) { cout << "T& operator=(const T&) 拷贝赋值构造:" << this << endl; } |
调用方式:
T t1; T t2; t1 = t2; |
移动构造
函数体:
T(T &&) { cout << "T(T &&) 移动构造:" << this << endl; } |
调用方式:
T t = CreateT(); // 通过一个函数来返回拷贝的对象
T t1; T t2(std::move(t1)); |
移动赋值构造
函数体:
T& operator=(T&&) { cout << "T& operator=(T&&) 移动赋值构造:" << this << endl; } |
调用:
T t; t = T();
T t1, t2; t1 = std::move(t2); |