1.virtual 关键字:
这个关键字描述的函数,都是虚函数。对于这个关键字描述过的函数,会被延时绑定,这样在使用的时候会找到真正的那个方法。
#include <iostream.h> class Animal { public: Animal(int height, int weight) {} ~Animal() {} virtual void breathe()=0; //纯虚函数,只有定义,没有内容 }; class Fish : public Animal { public: Fish() : Animal(400, 300) {} ~Fish() {} void breathe() //在子类中实现父类的纯虚函数 { cout<<"Fish bubble"<<endl; } }; void fn(Animal *pAn) { pAn->breathe(); } void main() { Fish fish; Animal *animal; animal=&fish; fn(animal); }
使用virtual 关键字描述的函数都是虚函数,如果在声明的后面加一个"=0"就是纯虚函数了。
virtual void test(void);//虚函数 virtual void test(void) = 0;//纯虚函数
虚函数只是告诉子类需要重载它,而纯虚函数则表示父类里面的它也无实际含义。
注意:如果父类是一个抽象类,请把析构函数设置为虚函数,这样子类在释放的时候才会调用自己的析构函数。
Animal(int height, int weight) {} Fish() : Animal(400, 300) {}
构造函数这块因为都要调用,需要这样指定一下父类的构造是那一个
相关推荐
一个student类,lectureTeatre类,继承抽象module类,通过继承来实现接口
c++上的一道题,网上尚未有答案,来自郭文平老师的书
Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳..........................
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
类是面向对象语言必须提供的用户定义的数据类型,它将具有相同状态、操作和访问机制,多个对象抽象成为一个对象类。 类的一般定义格式如下: class <类名> { private: <私有数据成员和成员函数>; protected: ...
学生信息包括:学号、姓名、性别、年龄、班级等信息。 小学生除了包括学生所有信息外,还包括英语、数学和...设计一程序能够对学生成绩进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。
C++的多重继承功能较广,Java的interface功能只是其中的一个子集。因为C++的虚拟函数可以有纯虚拟函数,也可有非纯虚拟函数,而Java只有抽象函数,所以功能模式少一种,自然能达到的效果较少一些。 但这并不代表Java...
这些方法是围绕C++支持的抽象机制实施的:抽象数据类型,继承结构中的组合类型,面向对象程序设计以及多重继承。本书还展示了C++语言间接支持的核心习惯用法,诸如虚拟构造函数、原型对象以及高级垃圾收集技术。 ...
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于...
这本经典、畅销的数据结构教材详细介绍了数据抽象的基础知识,强调作为面向对象方法基础原理的规范和实施之间的区别。书中使用的软件工程原则和概念以及UML图便于增强学生的理解。 ◆ 详细介绍了数据抽象,强调规范...
基础的C++继承的实验,供大家学习。。。
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
C++和C语言都是面向对象的; 6. 下面关于对象概念的描述中,( )是错误的。 A.对象就是C语言中的结构变量; B.对象代表着正在创建的系统中的一个实体; C. 对象是一个状态和操作(或方法)的封装体; D.对象之间的...
基于C++抽象封装集成多态开发的物品销售系统V1.0,体现了类的封装继承多态,数据处理采用文本方式
1. 如果一个类B在语法上继承(extend)了类A, 那么在语义上类B是一个类A.2. 如果一个类B在语法上实现了(implement)接口I, 那么类B遵从接口I制定的协议. 使用abstract class的根本原因在于, 人们希望通过这样的方式, ...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
C++程序设计教程 第10章 继承(共19页) C++程序设计教程 第11章 面向对象编程(共21页) C++程序设计教程 第12章 多态(共8页) C++程序设计教程 第13章 抽象类(共2页) C++程序设计教程 第14章 模板(共32页) ...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...