sách gpt4 ăn đã đi

c++ - 在多级继承中派生的虚拟基类会发生什么?

In lại Tác giả: Walker 123 更新时间:2023-11-30 01:24:17 24 4
mua khóa gpt4 giày nike

在玩继承时,我碰巧尝试了这个:

class A
{ int i; };

class B : virtual public A
{ int j; };

class C : public B
{ int k; };

int main()
{
std::cout<
trả về 0;
}

这给了我输出 6

虽然以下内容按预期工作,但输出 3

class A
{ int i; };

class B : public A // No virtual here
{ int j; };

class C : public B
{ int k; };

int main()
{
std::cout<
trả về 0;
}

为什么会有这种差异?而且,为什么它是第二种情况的两倍?

câu trả lời hay nhất

依赖于实现

然而,几乎所有的编译器都会使用相同的机制,只要你有一个 ảo 关键字,编译器就需要通过 vptrvtables< 做一些额外的簿记工作。这种额外的簿记增加了类(class)人数。

严格来说,您应该依赖任何特定的大小,这就是为什么标准提供 sizeof 来获取实际大小而不是猜测它的原因。

关于c++ - 在多级继承中派生的虚拟基类会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13776780/

24 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress