gpt4 book ai didi

c++ - 混淆完整对象和子对象

转载 作者:行者123 更新时间:2023-11-30 00:39:40 27 4
gpt4 key购买 nike

class A { 
int x;
};

class B : public A {
int y;
};

B b;

我知道 b 被认为是 B 的完整对象,B 包含的对象是 A 的子对象

但是有人向我指出了这一点,

C++ 标准 1.8 第 3 段

(1.8/3) For every object x, there is some object called the complete object of x, determined as follows: — If x is a complete object, then x is the complete object of x. — Otherwise, the complete object of x is the complete object of the (unique) object that contains x.

在这里,我发现到处都是那些 x 的措辞非常困惑,你能用我的例子解释一下吗?

最佳答案

在我看来,“完整对象”指的是 new 运算符返回的对象,或者作为局部变量放入堆栈的对象。例如,如果我们从您的代码开始(以上),b 是 x 的完整对象。我们是怎么得到的?通过我们的方式在层次结构中工作:

  1. (x) 是它自己的完整对象吗?不,它是 A 的成员,因此更大物体的一部分。
  2. (A) 是它自己的完整对象吗?不,它是 B 的父类(super class),并且因此是更大物体的一部分。
  3. (B) 是它自己的完整对象吗?是的,因为对象 b 是声明为 B 型。

(如果 b 是一个更大对象的一部分,那么我们将不得不在层次结构中走得更远才能找到完整的对象)

关于c++ - 混淆完整对象和子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176886/

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