gpt4 book ai didi

c++ - 虚拟继承成员查找

转载 作者:太空狗 更新时间:2023-10-29 20:43:23 24 4
gpt4 key购买 nike

我有以下继承虚拟类的代码,并且 inh::P1 被编译为 char。任何人都可以解释为什么编译器在这个例子中为 inh::P1 选择 char 而不是 int 吗?谢谢!

#include <iostream>

class myClass {public: typedef int P1;};
class myClassdef : virtual public myClass {};
class myClass2 : virtual public myClass { public: typedef char P1;};
class inh : public myClassdef, public myClass2 {};

int main()
{
std::cout << sizeof(inh::P1) << std::endl;
return 0;
}

最佳答案

sizeof(inh::P1);

查找从最直接的级别向上发生,因此 inh::P1 指的是 P1,它是通过 myClass2 继承的,它是确实是类型char。如果您需要引用最顶层基类中的成员,请使用:

  sizeof(myClass::P1);

注意:

inh::P1          --->  Refers to immediate base member, i.e: myClass2::P1
myClass2::P1 ---> Refers to member in current class scope, i.e: myClass2::P1
myClassdef::P1 ---> Refers to immediate base member, i.e: myClass::P1
myClass::P1 ---> Refers to member in current class scope, i.e: myClass::P1

关于c++ - 虚拟继承成员查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15492177/

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