考虑这段代码:
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/