基于动态参数的调度:是否会提出?如何实施?

时间:2019-04-03 19:31:37

标签: c++

在C ++中,仅存在静态重载。但是使用RTTI和一些新语法来表示我们要使用该新功能时,也应该有可能实现“基于动态参数的分派”,即“动态重载”。当然会有运行时开销,但是可以做到。

我想做的就是拥有


    return_type a_function(Derived1* a);
    return_type a_function(Derived2* b);
    return_type a_function(Derived3* c);
    // ...

甚至在执行此操作时也调用正确的函数:


    Base* a = new Derived1();
    /* ... */ a_function(a);

这实际上将调用具有以下签名的函数:


    return_type a_function(Base* a);

然后,程序员需要将此函数编写为调度程序,如下所示:


    return_type a_function(Base* a)
    {
        if (dynamic_cast(a)) 
            return a_function(dynamic_cast(a));
        else if // ...
    }

本文中将对“问题”和想法进行更长时间的讨论,这里还有一个悬而未决的问题:是否存在使用模板来帮助减少编写和维护调度员的“成本”的想法? >

0 个答案:

没有答案