同一个类的对象在内存中有完全相同的结构,如果作为一个整体进行复制或称拷贝是完全可行的。这个拷贝过程只需要拷贝数据成员,而函数成员是共用的(只有一份拷贝)。在建立对象时可用同一类的另一个对象来初始化该对象,这时所用的构造函数称为拷贝构造函数(Copy Constructor)。
先看代码
1 #include<iostream> 2 using namespace std; 3 class Test { 4 public: 5 //以参数列表形式对数据成员进行初始化 6 Test(int d = 0) :data(d) 7 { 8 cout << "Create Test Object:" << this << endl; 9 } 10 ~Test() 11 { 12 cout << "Free Test Object:" << this << endl; 13 } 14 private: 15 int data; 16 }; 17 int main(int argc, char **argv) 18 { 19 Test t1(10); 20 Test t2(t1); 21 getchar(); 22 return 0; 23 }
调用构造函数一次,却析构了2次。
Test t2(t1);这段代码并没有调用传统的构造函数,而是调用的拷贝构造函数