C++中成员查找的过程是如何发生的?

How the process of member look up occurs in C++?

我使用的是文档编号 4901,C++ Draft ISO 2021,特别是 6.5.2(成员名称查找)。我无法理解术语“成员子对象”和“基础 class 子对象”的很多用法。我已经在 : What is a member sub object?

第二个问题的答案我比较满意,第一个虽然没有帮助到我。我认为草案中的解释有点太抽象了,所以我会依赖上面引用的术语的严格定义,但真的没有找到。走另一条路,成员名称查找在实践中是如何发生的?术语:member subobjectbase class subobject 如何与成员名称查找相关?

从 ABI 的角度来看,BC 在以下方面几乎没有区别:

struct A {
  int x;
};

struct B : A {};

struct C {
  A base;
};

创建 BC 类型的对象都需要创建 A 类型的对象。在这两种情况下,A 的实例都属于 父对象。所以在这两种情况下它们都是子对象.

对于类型 B 的对象,A 对象是一个 base class 子对象 .

对于类型 C 的对象,A 对象是一个 成员子对象

编辑:整合评论中后续问题的内容。

struct D : A {
  A base;
};

D的例子中,D的每个实例中都有2个A类型的子对象。一个基础class子对象一个成员子对象.