首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当调用一个接受基类的函数时,我需要使用dynamic_cast吗?

当调用一个接受基类的函数时,我需要使用dynamic_cast吗?
EN

Stack Overflow用户
提问于 2009-10-23 22:07:31
回答 3查看 1.6K关注 0票数 1

我有一些这样的类:

代码语言:javascript
复制
interface class IA
{
};

interface class IB
{
};

public ref class C : public IA, public IB
{
};

public ref class D
{
    void DoSomething(IA^ aaa)
    {
    }

    void Run()
    {
        C^ bob = gcnew C();
        DoSomething(dynamic_cast<IA^>(bob));    // #1
        DoSomething(bob);           // #2
    }
};

目前,在调用这样的函数时,我总是尝试使用动态类型转换(上面的#1 )。

然而,它确实让代码变得相当丑陋,所以我想知道它是否真的有必要。

你以这种方式使用dynamic_cast吗?如果是这样,主要原因是什么?

EN

Stack Overflow用户

发布于 2009-10-23 22:14:20

在标准C++中,您使用dynamic_cast向下遍历层次结构,而不是向上遍历。在本例中,您将使用它尝试将IA或IB转换为C:

代码语言:javascript
复制
IA^ temp = /* get a C in some way. */;
C^ tempC = dynamic_cast<C^>(temp);
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1613706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档