课外闲谈10.函数重载的二义性

93 阅读1分钟

 一,函数重载应避免默认参数

void test(int a,int b = 10)
{
	cout << "1" << endl;
}
void test(int a)
{
	cout << "2" << endl;
}

int main()
{
	int a = 1;
	test(a);//程序会报错,因为默认参数的问题,使函数重载出现二义性。
}

二,形参个数一致,仅仅是形参名或者返回值不同

三,重载函数形参在同位置分别类型为传值或者传引用

        int fun(int a)
	{
		return 0;
	}
	int fun(int &b)
	{
		b = 20;
		return b;
	}
	int main()
	{
		int m, ret = 0;
		m = 10;
		ret = fun(m);
		return 0;
	}

\