Bootstrap

再谈C++构造函数——移动构造函数

隐藏的构造函数

构造函数是C++类默认的一个函数,在很多情况下编译器会对这些默认的构造函数做一些处理,如果不清楚这些处理的话,可能就会出现一些问题。
先看一下下面这段代码:

 #include <iostream>
using namespace std;

class demo{
public:
    // :num为初始化成员指针使用,一般用于初始化const变量。
   demo():num(new int(0)){
      cout<<"construct!"<<endl;
   }
   //拷贝构造函数
   demo(const demo &d):num(new int(*d.num)){
      cout<<"copy construct!"<<endl;
   }
   ~demo(){
      cout<<"class destruct!"<<endl;
   }
private:
   int *num;
};

demo get_demo(){
    return demo();
}

int main(){
    demo a = get_demo();
    return 0;
}
  • 代码中显式的定义了一个构造函数,一个拷贝构

;