1、纯虚方法解决什么样的问题,为什么要设计出纯虚方法?
考虑下面的需求,基类声明了一个方法,这个方法只针对具体的子类才有意义,比如Animal的Eat()方法,调用Animal的Eat方法是没有意义的。比如Dog吃肉,Cat吃鱼,而Animal吃什么呢,没有意义。
2、既然Animal调用Eat没有意义,如何禁止Animal调用Eat方法呢?
不允许实例化出来Animal对象,Animal调用没有意义,要求子类必须重写。
3、virtual void Eat()=0; 使Animal成为抽象类,不能实例化Animal,同时要求子类必须重写。
4、需要注意的是,纯虚方法是可以提供实现的,子类也可以调用父类的纯虚方法。
5、在Java中,可以使用abstract指明一个类是抽象类。但是在C++中,要让一个类成为抽象类,需要声明一个或者多个纯虚方法。
6、继承的时候,父类不需要加class,如下:class Dog : public Animal
相关文章
- 11-14C++程序设计方法4:成员函数模板
- 11-14c++头脑风暴-多态、虚继承、多重继承内存布局
- 11-14C++基础 多重继承引发的 虚基类与虚继承(基类被虚继承 就称为虚基类?)
- 11-14dev C++遇到endl无法调试的解决方法
- 11-14c++ kafka 客户端rdkafka报Receive failed: Disconnected问题原因以及解决方法
- 11-14三种初步简易的方法求解数值问题 of C++
- 11-14【原创】SystemVerilog中的多态和虚方法
- 11-14解决C++编译程序后闪退的方法
- 11-14虚方法(virsual method)
- 11-14C++编译错误syntax error : identifier 'THIS_FILE' 解决方法