12抽象基类中的所有virtual函数都必须声明为纯virtual函数吗?

 我来答
microroom
科技发烧友

2020-05-26 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1636万
展开全部

包含纯虚函数的类称为抽象类,不能用抽象类创建对象,只能继承抽象类。

但并不是抽象类中所有的virtual函数都必须声明为纯virtual函数。

抽象类可以包含的虚函数有3种类型:

1

非纯虚函数的虚函数

2

没有函数体的纯虚函数

3

虽然是纯虚函数,但提供了定义(包含函数体)。此种情况下,函数体只能在类外定义,不能在类内。

下面是一个例子:

#include<iostream>

using namespace std;

class a

{

public:

virtual void f1()

{

cout<<"f1 非纯虚函数的虚函数"<<endl;

}

//没有函数体的纯虚函数

virtual void f2()=0;

//有函数体的纯虚函数,函数体只能在类外定义

virtual void f3()=0;

};

void a::f3()

{

cout<<"f3 有函数体的纯虚函数"<<endl;

}

class b : public a

{

public:

virtual void f2()

{

cout<<"f2 在子类中为父类的没有函数体的纯虚函数提供实现"<<endl;

}

virtual void f3()

{

a::f3();

}

};

int main()

{

b b1;

b1.f1();

b1.f2();

b1.f3();

return 0;

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式