C++ 纯虚方法
2015-06-12 22:04
405 查看
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
考虑下面的需求,基类声明了一个方法,这个方法只针对具体的子类才有意义,比如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
相关文章推荐
- 转 值得推荐的C/C++框架和库
- 单链表的逆置-C++实现
- chapter12test4
- C++ Primer学习2:细节:引用
- leetcode系列题目——Set Matrix Zeroes
- C++二叉树翻转
- c++中的4种类型转换
- zerglurker的C语言教程008——循环语句详解
- C++中的explicit
- 【学习笔记】【C语言】循环结构-do while
- 用C++解决:把数组排成最小的数问题
- c++ 简单对象的内存分配过程
- c++栈和队列
- C/C++自学路径
- 实验第三方的内存泄露检测工具VLD(Visual Leak Detector)
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- 实验内存泄露的检测
- c++中虚函数和多态性
- C++模板实现事件处理器中的“通用成员函数指针”的调用(三)
- C++模板实现事件处理器中的“通用成员函数指针”的调用(一)