考虑以下代码:
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;
}