基类指针该如何调用基类没有而派生类有的方法
①如果一个函数在基类中没有(没有定义的必要),而派生类必须有。这种情况下该如何声明这两个类才能让基类指针调用派生类的该方法呢?
我想可以用纯虚函数,这样基类的方法就可以不必定义了,但是这又会导致基类对象不能使用,难道必须在基类也定义一个这样的虚函数吗?那岂不是两者要差不多数量的函数声明?
②基类析构函数是虚拟的,但是基类和派生类中的析构函数名字不一样,调用析构函数时也能按正常顺序,难道虚函数调用不关心函数名
[解决办法]
class A
{
};
class B :public A
{
public:
void test(){cout<<"test"<<endl;}
};
int main()
{
A a;
B *b = (B*)&a;
b->test();//这样是可以的、我试过 但是不知为什么! 我也这样用过 行不行 最近还没找到答案
return 0;
}