1. 程式人生 > 其它 >拷貝建構函式

拷貝建構函式

技術標籤:C/C++學習c++

1,普通物件之間賦值

我們知道普通物件的賦值是很簡單的,如:

int a = 10;
int b = a;

僅僅只用一個等號就能將物件a的值賦值給b。

2,如果是類呢?

#include<iostream>
using namespace std;

class A{
public:
	A(){
		cout << "建構函式" << endl;
	}
	//A(A &aa){
	//	cout << "拷貝建構函式" << endl;
	//	this->a = aa.a;
	//}
	int a;
	~A(){
		cout << "解構函式" << endl;
	}
};

void test(){
	A a;
	a.a = 10;
	A b = a;
	cout << b.a << endl;
}

int main()
{
	test();
	system("pause");
	return 0;
}

可見此時使用等號可以將物件a的東西賦值給物件b,此時物件b中的資料a也變成了10。

預設的拷貝建構函式如下:

A(A &aa){
cout << "拷貝建構函式" << endl;
this->a = aa.a;
}

拷貝建構函式

  1. 本質上也是一種建構函式
  2. 呼叫時機當用一個物件建立另外一個物件時呼叫。
  3. 預設的拷貝構造的作用(1,深拷貝,完全的把物件拷貝給物件;2,淺拷貝)

上面展示的是簡單的方法。

拷貝建構函式就是和正常的類似,即將一個物件裡面的東西都複製給另一個物件,這種方法也是預設的拷貝建構函式所做的事情。

如果類中的資料建立到堆上,這種普通的方法還顯然就不適合了,也就引出了第三步:深拷貝和淺拷貝的問題。

深拷貝和淺拷貝:https://blog.csdn.net/qq_46423166/article/details/113383873