gpt4 book ai didi

C++虚拟类基础题

转载 作者:行者123 更新时间:2023-11-30 04:36:43 26 4
gpt4 key购买 nike

  1. virtual publicpublic virtual 之间有什么区别吗?如果是,那为什么?
  2. 为什么所有类(class)都不是虚拟的?

例子:

class x { 
protected: int a;
};

class y : public virtual x {
protected: int b;
};

最佳答案

不是,public virtualvirtual public没有区别,它们是两个不相关的说明符(一个决定继承关系的可见性,另一个决定关系是否可见)是虚拟的还是非虚拟的)可以自由交换。

虚拟继承与非虚拟继承在语义上存在差异(如果 D 继承自 B 和 C,而 B 和 C 都继承自 A,则虚拟继承意味着只有一个 A 实例将存在并由 B 和 C 共享,而非-虚拟继承意味着将存在两个实例)。有时,您需要一个实例,有时您需要两个。语言设计者必须选择一个默认值,并且选择了非虚拟继承,因此您需要明确要求虚拟继承。

关于C++虚拟类基础题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4377582/

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