【发布时间】:2012-11-17 06:05:24
【问题描述】:
假设我有一个代码:
class A
{
public:
void f(int s) {}
};
class B:public A
{
public:
void f() {}
};
int main()
{ B ob;
ob.f(4);
}
然后在这种情况下,编译器会生成一个错误“没有匹配的函数用于调用‘B::f(int)’” 但是类 B 已将 A 继承为 public,因此 B 必须具有函数“void f(int s)”。不知道为什么编译器会在这里产生错误?
【问题讨论】:
-
你不应该问“编译器是怎么做的”,而应该问“C++ 中的规则是什么......”。
标签: c++ inheritance