c++ - 动态绑定(bind)子类函数

标签 c++ dynamic binding

考虑这段代码:

class Bas
{
    public:
        virtual void test() = 0;
};
class Sub : public Bas
{
    public:
        void test(){};
        void subfunc(){};
};
int main()
{
    Bas * bs = new Sub();
    bs->test();
    bs->subfunc(); //Gives error
    return 0;
}

这里为什么不能使用多态呢?我的意思是,对象bs是Bas和Sub类型的,为什么只能使用Bas中的函数呢?

最佳答案

您只能使用基类指针获取您在基类中定义的那些函数。您的基类没有 subfunc() 这就是您收到错误的原因。以下代码可能对您有用

class Bas
{
public:
    virtual void test() = 0;
    virtual void subfunc(){};
};

class Sub : public Bas
{
public:
    void test(){};
    void subfunc(){};
};

int main()
{
    Bas * bs = new Sub();
    bs->test();
    bs->subfunc();
    return 0;
}

关于c++ - 动态绑定(bind)子类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39319758/

相关文章:

c++ - 是语句value += i;与 value = value + i 完全相同?

c++ - Protocol Buffers 的静态链接导致与现有符号的冲突

android - 如何在Android中动态添加表格中的字段?

javascript - 我可以假设 DOM 在动态加载的 JS 脚本上还没有准备好吗?

c# - 模板中的 MVVM 绑定(bind)问题(特别是 Expander 控件的 HeaderTemplate)

wpf - IObservable<T> 和 INotifyPropertyChanged - 是否存在连接

c++ - 从 C++ 向 QML 发出信号以读取 Q_PROPERTY 是一个同步事件吗?

android - 在嵌入式上快速解决许多微小的线性规划问题

javascript - 将 HTML 元素推送到一个数组中,稍后将它们追加到一个 div 中,该 div 也是动态创建的

wpf - DependencyProperty默认值