2016 - 2024

感恩一路有你

虚基类是抽象类吗 设置虚基类的目的?

浏览量:2973 时间:2021-03-16 10:20:38 作者:admin

设置虚基类的目的?

其目的是消除歧义。

当多个继承路径上存在公共基类时,在多个路径的汇合处,公共基类将生成多个实例(或多个副本)。如果只想保存基类的一个实例,可以将公共基类描述为虚拟基类。

虚拟基类的基本原则是在内存中只有其成员的一个副本。这样,通过将基类继承声明为虚继承,只能继承基类的一个副本,从而消除了歧义。使用虚拟限定符将基类继承描述为虚拟的。

什么叫做虚基类?

什么叫做虚基类?

,也就是说,编译器不能确定您是否在D中。在f()中调用哪个函数f。这可能会让人觉得有点奇怪。命名只定义了一个CA::F。因为每个人都从CA派生,所以它自然地被称为CA::F。为什么我们不能确定呢?

这是因为编译器在编译时需要确定子类的函数定义。例如,确定CA::F。然后,在编译CB和CC时,它还需要在编译器的语法树中生成CB::F、CC::F和其他标识符。然后,在编译CD时,由于CB和CC有一个函数f,编译器将尝试生成这两个CD::f标识符。很明显,此时会报告错误,为时已晚。

(当我们不使用CD::F时,不会生成上述任何标记,因此如果我们删除D.

要解决此问题,有两种方法:

1。重载函数f():此时由于我们已经明确定义了CD::f,编译器在检查CD::f()调用时不需要一步一步生成CD::f label;

此时CD的元素结构如下:| CB(CA)|

]| CC(CA)|

,所以sizeof(CD)=8(CB和CC各有一个元素K)

2。使用虚拟继承:虚拟继承也称为共享继承。这种共享实际上是在编译过程中实现的。当使用虚拟继承时,上述程序将变成以下形式:类ca。

虚基类是抽象类吗 虚基类的作用 面向对象程序设计四大特性

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。