给定基类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!";
}
Run Code Online (Sandbox Code Playgroud)
我得到错误,说在尝试定义void B :: f()时没有在B中声明f().我必须在B中明确声明f()吗?我认为如果接口改变,我不应该纠正从它派生的每个类中的声明.B是否无法自动从A获取所有虚函数的声明?
编辑:我发现一篇文章说纯虚函数的继承取决于编译器:http: //www.objectmentor.com/resources/articles/abcpvf.pdf
我正在使用VC++ 2008,想知道是否有一个选项.
我是编程和尝试学习C的新手.我正在读一本书,在那里我读到了这些陈述但却无法理解它们的含义.
c ×2
definition ×2
c++ ×1
c++-faq ×1
declaration ×1
difference ×1
terminology ×1
virtual ×1
visual-c++ ×1