根据C ++ Primer 5th Edition,
“值得注意的是,我们可以为纯虚函数提供定义。但是,必须在类外部定义函数体。也就是说,我们不能在类内部为= 0的函数提供函数体。 ”。
但是,下面的代码在VS2015中对我有用。谁能解释为什么?
struct A
{
virtual void fn1() = 0 { cout << "A::fn1()" << endl; }
};
struct B : public A
{
virtual void fn1() override { cout << "B::fn1()" << endl; }
};
int main()
{
B b;
b.fn1(); // "B::fn1()"
b.A::fn1(); // "A::fn1()"
cin.get(); return 0;
}