Advertisement

C++中的函数重载及其指针技术

阅读量:

函数重载:许多人觉得函数重载不过是名称相同但返回类型不同的函数;

这种看法虽然不完全错误,但仍然存在一些细节问题。

函数重载最显著的特征是多个函数具有相同的名称;那么C++编译器又是如何判断用户需要调用哪一个函数呢?

如果你思考到这一步,应该能够理解为何说返回值并不是决定函数重载的关键因素了:在调用函数时,首先需要传递参数,编译器才会根据参数来查找对应的函数。换句话说,编译器无法预知用户期望的返回结果,它只能通过已知的参数类型来匹配相应的函数。

因此,我们可以得出一个明确的结论:

决定函数重载的因素是函数名称以及参数(包括类型和数量)。

举个例子:

void myfun(int a, int b)
{
cout << "a = " << a <<endl;
cout << "b = " << b <<endl;
}

int myfun(int a, int b)
{
cout << "a = " << a <<endl;
cout << "b = " << b <<endl;
}

如果这两个函数被写在一起,编译器会报错(可以亲自运行一下代码验证这一现象),原因很简单:它们只有返回类型不同,而名称和参数类型完全一致(假设自己是C++编译器,在面对两个这样的函数时也无法判断应该调用哪一个)。

再来一个包含默认参数的例子:

voi

全部评论 (0)

还没有任何评论哟~