【发布时间】:2010-04-19 10:35:30
【问题描述】:
给定基类 A 和派生类 B:
class A {
public:
virtual void f() = 0;
};
class B : public A {
public:
void g();
};
void B::g() {
cout << "Yay!";
}
void B::f() {
cout << "Argh!";
}
在尝试定义 void B::f() 时,我收到错误消息说 f() 未在 B 中声明。我必须在 B 中明确声明 f() 吗?我认为如果接口发生变化,我不应该更正从它派生的每个类中的声明。 B 有没有办法自动从 A 获取所有虚函数的声明?
编辑:我发现一篇文章说纯虚函数的继承取决于编译器: http://www.objectmentor.com/resources/articles/abcpvf.pdf
我用的是VC++2008,不知道有没有这个选项。
【问题讨论】:
标签: c++ visual-c++ virtual definition