在C ++程序中:
#include<iostream.h>
class A
{
public: virtual void func()=0;
};
class B:public A
{
public: void show()
{
func();
}
};
void B::func()
{
cout<<"In B"<<endl;
}
int main()
{
B b;
b.show();
}
如果在类B的主体内重新定义了虚函数func(),则没有错误。但是在使用范围解析运算符时,编译器会抛出错误。 那是为什么?
答案 0 :(得分:13)
这与虚拟的func
没有直接关系,你总是需要在课堂上声明它:
class B:public A
{
public: void show()
{
func();
}
void func(); // add this
};
void B::func()
{
cout<<"In B"<<endl;
}
答案 1 :(得分:4)
您必须声明重新定义B类中的成员函数func()。
class B:public A
{
virtual void func();
public:
void show() {func(); }
};