一、引入原因: 1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。 2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。 为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtu...
分类:
其他好文 时间:
2015-07-10 18:48:31
阅读次数:
96
C++不像其他很多编程语言有接口、委托或者协议的概念,但是利用纯虚函数和C++多重继承的特性,我们也能实现接口、委托或协议要做的事情,下面的通过一个人设置闹钟然后被闹钟唤醒的例子来说明如何在C++中实现委托回调。...
分类:
编程语言 时间:
2015-07-09 07:25:53
阅读次数:
129
上一篇文章中说道,C++ 的三个基本特质是 封装、继承、多态。其中多态包括静多态和动多态,分别在编译和运行过程中实现。而动多态是由虚函数来实现的,其实现机制体现了C++的神秘性。...
分类:
编程语言 时间:
2015-07-08 22:40:31
阅读次数:
178
在C#中使用关键字 abstract 来定义抽象类和抽象方法。不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例。"一个包含一个或多个纯虚函数的类叫抽象类,抽象类不能被实例化,进一步一个抽象类只能通过接口和作为其它类的基类使用."-C++ Programmin...
简单的说,虚函数就是被virtual修饰的成员函数。其目的就是为了实现类的多态性,需要了解一下几个问题:1.一个函数是虚函数,并不是说这个函数不被实现;2.定义一个函数为虚函数的目的,是为了从基类调用派生类的同名函数;3.如果一个函数被定义为纯虚函数,代表这个函数没有被实现,需要子类实现。举例说明:...
分类:
编程语言 时间:
2015-06-25 10:11:25
阅读次数:
125
虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman{public:virtu...
分类:
其他好文 时间:
2015-06-16 18:54:40
阅读次数:
153
C++ 接口(抽象类)接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所...
分类:
其他好文 时间:
2015-06-14 13:45:45
阅读次数:
148
输入代码:
/*
*Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:sum123.cpp
*作 者:林海云
*完成日期:2015年6月13日
*版 本 号:v2.0
*
*问题描述:写一个程序,定义抽象基类Shape,由它派生出3个派生类,Circle(圆形)、Rectangle(矩形)、Triangle(三角形)。...
分类:
其他好文 时间:
2015-06-13 11:23:18
阅读次数:
139
输入代码:
/*
*Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:sum123.cpp
*作 者:林海云
*完成日期:2015年6月13日
*版 本 号:v2.0
*
*问题描述:
*程序输入:无设计一个抽象类CSolid,含有用于求表面积及体积的两个纯虚函数。
设计派生类CCube、CBal...
分类:
其他好文 时间:
2015-06-13 11:22:21
阅读次数:
125
实验要求:定义平面图形类Shape,至少包含虚函数(或纯虚函数)成员getPerimeter()、getArea()、getClassName()和Draw();类Line, Trapezoid, Triangle, Circle分别表示线段、梯形、三角形和圆形。Rectangle继承自Trapez...
分类:
其他好文 时间:
2015-06-10 01:03:09
阅读次数:
126