Boost.Python中的调度功能和转发功能是什么意思?

时间:2015-01-20 11:22:25

标签: python c++ boost virtual override

任何人都可以帮助我理解Boost Python中的调度函数和转发函数是什么意思,同时重写类成员函数并创建基类的包装器?

相同的例子可以在以下网址找到:

Virtual Functions with Default Implementations

以下是无需转发功能即可正常工作的示例:

class Base
{
    public:
virtual void xfoo(int i)
    {
        cout << "XFOO::BASE" << i;
    }

        Base(){}
        Base(const Base&){}
};

class BaseW : public Base, public wrapper<Base>
{
    public:
    void xfoo(int i)
    {
        if(override f= this->get_override("xfoo"))
        {
            f();
        }
        Base::xfoo(i);
    }

};

class BaseImpl : public Base
{
    public:
    void xfoo(int i)
    {
        cout << "xFoo:Der " << i;
    }
};
BOOST_PYTHON_MODULE(hello)
{
    class_<BaseW, boost::noncopyable >("Base")
        .def("xfoo",&Base::xfoo)
        ;
    class_<BaseImpl, bases<Base> >("BaseImpl");
}

1 个答案:

答案 0 :(得分:0)

&#34;调度功能&#34;是&#34;切换&#34;在派生类类型上找出虚拟函数的哪个实现应该执行。像纯虚函数一样。 &#34;转发功能&#34;似乎是指虚函数的默认(基类)实现。

我也觉得这个术语有点令人困惑。但它只用于传递Boost文档,而且我认为它在宏观计划中非常重要。尽量不要挂断它。