纯虚函数一定不能在基类中定义吗?观图中为啥实现了
纯虚函数一定不能在基类中定义吗?看图中为啥实现了 ?
今天在网上看到一篇文章,对他写的这个地方有点疑问:看图


问下
1)那个纯虚函数为什么要实现?不实现可以不?
2)这个类是不是接口类?抽象基类和接口类有什么关系 ?
------解决方案--------------------
如果是普通的基类,派生类可以完全不重新定义这个虚函数,直接使用基类的虚函数,但纯虚函数就不行了。
对于纯虚函数来说,你可以实现他也可以不实现他,但是纯虚函数会强调让派生类覆盖这个虚函数。也就是说派生类必须有自己的虚函数,而不能直接继承基类(抽象类)的纯虚函数,却不定义自己的。否则自己仍然是一个抽象类,不能实例化。
当然如果你实现了这个纯虚函数,可以用 基类::虚函数 的形式来访问他。比如:
今天在网上看到一篇文章,对他写的这个地方有点疑问:看图
问下
1)那个纯虚函数为什么要实现?不实现可以不?
2)这个类是不是接口类?抽象基类和接口类有什么关系 ?
------解决方案--------------------
如果是普通的基类,派生类可以完全不重新定义这个虚函数,直接使用基类的虚函数,但纯虚函数就不行了。
对于纯虚函数来说,你可以实现他也可以不实现他,但是纯虚函数会强调让派生类覆盖这个虚函数。也就是说派生类必须有自己的虚函数,而不能直接继承基类(抽象类)的纯虚函数,却不定义自己的。否则自己仍然是一个抽象类,不能实例化。
当然如果你实现了这个纯虚函数,可以用 基类::虚函数 的形式来访问他。比如:
#include<iostream>
using namespace std;
class A{
public:
virtual void display() =0
{
cout<<"A"<<endl;
}
};
class B:public A{
public:
virtual void display()
{
A::display();
cout<<"B"<<endl;
}
};
int main(){
B b;
b.display();
return 0;
}