1

为什么下面的函数void i( )不像“正常”函数那样被调用。

void i(){
    cout << 10 << endl;
}

int main(){
    class i { 
        int j;
    };

    i();// 

    return 0;
}

预期的正常行为是打印 1O,但我没有得到任何东西,既没有编译器警告也没有结果。

4

2 回答 2

8

内部i遮蔽了外部。您正在调用类 i 的默认构造函数,在这种情况下它什么也不做。

解决方案是明确调用范围,如::i();

于 2013-06-17T13:38:45.250 回答
1

因为它试图在当前范围内调用“i”:你可以调用你的函数::i()

于 2013-06-17T13:39:28.250 回答