一个理论问题 - 内部定义函数可以重载外部定义吗? 例如:
int foo(){
class x{
public:
int foo() { return 1; }
int bar() { return foo(); }
}
return 0;
}
内部foo隐藏了x类中的外部。有人可以给出一个内部函数重载外部函数的例子,而不是隐藏它吗?
谢谢!
答案 0 :(得分:1)
函数重载意味着您有两个具有相同名称但参数不同的函数。您可以使用函数foo(int a)
,然后定义函数foo(double a)
而不隐藏另一个函数。
答案 1 :(得分:1)
我认为您的意思是成员函数是否可以重载命名空间范围函数。
这里的单词重载实质上意味着两个或多个具有不同签名(参数数量和/或其类型)的函数可访问对名称查找可见,并且具有同名。
我认为不可能重载,因此根据参数,相同的非限定名称可以代表成员函数或命名空间作用域函数。如,
#include <cmath> // std::sin
struct S
{
void sin() const { cout << "By Odin!" << endl; }
void foo()
{
using std::sin;
sin( 3.14 ); // OK.
//sin() !Will not find the member func.
}
};
相反,如果没有using
声明,则可以将成员函数调用为非限定,但不能调用命名空间作用域函数。