gpt4 book ai didi

c++ - 'unrelated types' 之间的 static_cast

转载 作者:行者123 更新时间:2023-11-30 01:27:45 26 4
gpt4 key购买 nike

如果我有这样的类结构:

class A
{
public:
int a;
void funcA(){a = 0;}
};

class B
{
public:
int b;
void funcB(){b = 0;}
};

class C: public A, public B
{
public:
int c;
void funcC(){c = 0;}
};

为什么我可以执行此转换?

A* pA = new A;

C* pC = static_cast<C*> (pA);
B* pB = static_cast<B*> (pC);

pB->funcB();

A 和 B 不相关,不是吗?

最佳答案

它们可能不相关,但编译器不会在这里进行 inter-cast 诊断。

它只是说“哦,CA 的派生类,就我而言这是合法的”。
在下一行它说“哦,BC 的基类,就我而言这是合法的”。
仅此而已。在您的情况下,C 链接 AB 之间的转换。

关于c++ - 'unrelated types' 之间的 static_cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8430907/

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