【发布时间】:2011-09-01 18:25:16
【问题描述】:
考虑下一个代码:
#include <iostream>
using namespace std;
class A
{
public:
virtual int f() {cout <<"A:: f()\n"; return 1;}
virtual void f(int) {cout <<"A:: f(int)\n";}
virtual void g() {cout <<"A::g()\n";}
};
class B3 : public A
{
public:
void f() {cout <<"B3::f ()\n";}
};
int main()
{
return 0;
}
它会产生以下错误:
..\main.cpp:17: error: conflicting return type specified for 'virtual void B3::f()'
..\main.cpp:9: error: overriding 'virtual int A::f()'
但是为什么?在最坏的情况下,我认为我会有一个隐藏案例,但是我收到关于 A 的编译错误 virtual int f() {cout <<"A:: f()\n"; return 1;}
谢谢,罗南
【问题讨论】:
标签: c++ inheritance virtual