为什么这个snippet编译(并打印“Fi Fi”):
#include <iostream>
using namespace std;
void f(int) { cout << "Fi" << endl; }
void f(float) { cout << "Ff" << endl; }
struct A
{
void f(int) { cout << "Fi" << endl; }
void f(float) { cout << "Ff" << endl; }
};
int main()
{
f(0);
A().f(0);
}
但this one没有?
#include <iostream>
using namespace std;
struct A { void f(int) { cout << "Fi" << endl; } };
struct B { void f(float) { cout << "Ff" << endl; } };
struct C : A, B
{};
int main()
{
C().f(0); // (1)
}
根据我的理解,第(1)行应该调用A::f
,但调用是不明确的。