gpt4 book ai didi

c++ - 纯虚函数的继承

转载 作者:行者123 更新时间:2023-11-28 01:34:11 24 4
gpt4 key购买 nike

有人可以澄清这些概念并回答这些问题吗?提前谢谢你。

A 类是一个基类,有一个名为 display 的纯虚函数。

class A 
{
public:
virtual void display()const=0;

};

B类是继承A类的派生类。此外,B 覆盖了显示功能,

class B:public A 
{
public:
void display()const{cout<<"Always"<<endl;}

};

Q1:现在B包含1个覆盖显示和1个继承的纯虚拟显示,对吗?或者纯虚拟的是否由于覆盖而变得不存在。

我问这个是因为我面临的最终问题是:Q2:假设 B 确实重写了显示功能,现在,如果有一个新类

class C:public B 
{
public:
};

现在,我很清楚所有第一级派生类(如 B)的概念必须覆盖纯虚函数(来自类 A),假设它们确实覆盖了它,现在如果有一个新的类 C 派生自第一级派生类之一(类 B ),它是否还需要覆盖纯虚函数(显示)或者不需要它,因为它在 B 类中被覆盖,C 继承 B(因此接收显示功能的覆盖?

最佳答案

Suppose there is a virtual base class A

class A 
{
public:
virtual void display()const=0;

};

.

class B:public A 
{
public:
void display()const{cout<<"Always"<<endl;}

};

Q1: Now B contains 1 overridden display and 1 inherited pure virtual display, right? Or does the pure virtual one become non-existent due to the override.

函数的继承就是替换。正如您所说,基类函数在派生类中变得不存在。无论基类函数是否为虚函数,都是如此。

Q2: Suppose B did override the display function, Now, if there a new class C

class C : public B 
{
...
};

will it also need to override the pure virtual function (display)?

不是,C获取了B的所有功能,包括display()的具体实现

但是,C 可以可选地 再次覆盖display() 函数。等等等等。一个类可以被子类化的次数没有限制。

关于c++ - 纯虚函数的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50084608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com