pbase 都已经指向继承对象了,为什么不能执行继承对象的方法?解决方法
pbase 都已经指向继承对象了,为什么不能执行继承对象的方法?
#include <iostream>
using namespace std;
class AA
{
//public:
// void show()
// {
// cout < < "AA " < <endl;
// }
};
class BB : public AA
{
public:
void show()
{
cout < < "BB " < <endl;
}
};
class CC :public AA
{
public:
void show()
{
cout < < "CC " < <endl;
}
};
int main()
{
AA *pbase;
BB bb;
CC cc;
pbase=&bb;
pbase-> show ();
pbase=&cc;
pbase-> show();
}
------解决方案--------------------
class AA
{
public:
virtual void show() = 0;
};
------解决方案--------------------
AA类型并没有show()方法,这不是公牛挤奶吗。
通过基类去调用派生类的方法是可以的,但是,基类要提供一个界面,你可以提供一个空的虚函数。
#include <iostream>
using namespace std;
class AA
{
//public:
// void show()
// {
// cout < < "AA " < <endl;
// }
};
class BB : public AA
{
public:
void show()
{
cout < < "BB " < <endl;
}
};
class CC :public AA
{
public:
void show()
{
cout < < "CC " < <endl;
}
};
int main()
{
AA *pbase;
BB bb;
CC cc;
pbase=&bb;
pbase-> show ();
pbase=&cc;
pbase-> show();
}
------解决方案--------------------
class AA
{
public:
virtual void show() = 0;
};
------解决方案--------------------
AA类型并没有show()方法,这不是公牛挤奶吗。
通过基类去调用派生类的方法是可以的,但是,基类要提供一个界面,你可以提供一个空的虚函数。