gpt4 book ai didi

c++ - 检查一个对象在C++中是哪个子类?

转载 作者:行者123 更新时间:2023-11-28 03:12:01 25 4
gpt4 key购买 nike

鉴于有以下结构类型:

struct A {};
struct B : A {};
struct C : A {};
struct D : B {};

我们有一段代码:

A a = f();

您将如何检查结构的实际类型?即是 ABC 还是 D

如果需要,我可以给出我尝试为此使用答案的上下文,但我认为没有必要。

最佳答案

请注意,C++ 中的多态性仅适用于指针和引用,如果按值返回 A,它将始终是 A。如果函数 f() 返回类型 B 的类,slicing会发生。

如果您更改函数以返回指向 A 的指针,那么您可以使用动态转换并检查是否返回 null。

A *a=f();
B *b=dynamic_cast<B*>(a);
if(b!=NULL)
{
//a was of type B
}

关于c++ - 检查一个对象在C++中是哪个子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18170946/

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