例如写一个animal,fish,bird的类,fish和bird继承animal类,这时候就涉及到我的盲区了,经过一番摸爬滚打,了解到这时animal 类不能被用于实例化对象,只能作接口使用。
作为一个接口,它就得包含一些对象数据和特别的纯虚函数
class Animal
{
public:
virtual void Print()=0;
}
并且一旦有了纯虚函数,这个类即为抽象类,不能被实例化;派生类也要重写纯虚函数。
virtual只要在父类中写就好了,派生类中不用加virtual。
父类中正常构造函数,子类中是这样的
Fish(string a,bool b):Animal(a,b){};
main函数中对接口的使用如下
Animal *animal= &fish;
animal->Print();
我当时写的时候又有一个问题,报错显示不允许对不可访问的基类类型强制转换。因为我写的是protected继承,应该写public继承
class Fish: public Animal
{
};