C++實參是怎麼初始化形參的

我一直很疑惑,實參初始化形參時,是通過拷貝構造函數還是賦值運算符。
今天來做一個測試。

首先創建一個類,實現其構造函數、拷貝構造函數、賦值運算符函數。

class A
{
public:
	A() {
		cout << "構造函數" << endl;
	}

	A(const A &a) {
		cout << "拷貝構造函數" << endl;
	}

	A& operator=(const A& a) {
		cout << "賦值運算符" << endl;
		return *this;
	}
};

一、值傳遞

定義一個值傳遞的函數。

void fun(A a) {}

調用

	A a;
	cout << "call fun" << endl;
	fun(a);

結果:
構造函數
call fun
拷貝構造函數

結果出來了,是通過拷貝構造函數。

二、引用傳遞

定義一個引用傳遞的函數。

void fun(const A &a) {}

調用

	A a;
	cout << "call fun" << endl;
	fun(a);

結果:
構造函數
call fun

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章