当我的类成员名和成员函数名相同时,G++ 编译器会报错。似乎每当变量名恰好与函数名相同时,编译器都会抱怨。
在 Java 中,情况并非如此。我只是想知道为什么 G++ 编译器无法区分变量名和函数名,因为函数名总是带有一对括号。
当我的类成员名和成员函数名相同时,G++ 编译器会报错。似乎每当变量名恰好与函数名相同时,编译器都会抱怨。
在 Java 中,情况并非如此。我只是想知道为什么 G++ 编译器无法区分变量名和函数名,因为函数名总是带有一对括号。
struct Callable
{
void operator()() const { }
};
struct Test
{
void Call() { }
Callable Call;
};
int main()
{
Test x;
x.Call(); // To which 'Call' does this refer?
}
这里有两个原因:
operator()
()
)在第一种情况下,会variable()
怎么做?其次,编译器必须通过操作的返回类型来确定正确的操作——由于各种原因,C++ 不允许这样做。