gpt4 book ai didi

c++ - 为什么 C++ 会这样?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:36 25 4
gpt4 key购买 nike

#include<stdio.h>

class A { public: int a;};

class B: public A {
int c;
int d;
};

int main() {

A* pA = new B[10];
B* pB = new B[10];

printf("\n%d", pA->a);
pA++;
printf("\n%d", pA->a); // prints junk value

printf("\n\n%d", pB->a);
pB++;
printf("\n%d", pB->a);
return 0;
}

第二个 printf 打印一个垃圾值。

它应该表明它指向一个 B 类型的对象并递增 sizof(B)

为什么没有发生这种情况?

最佳答案

不应该。 pA 的声明类型是A*,所以它增加了sizeof(A),它指向第一个的中间数组中的 B。

关于c++ - 为什么 C++ 会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2868301/

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