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

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