简单类型的继承和重载

时间:2014-06-04 21:17:58

标签: c++ inheritance overloading

为什么这个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,但调用是不明确的。

0 个答案:

没有答案