2013年1月12日
摘要: 引言 一直以来都没有写过一篇关于概念性的文章,因为我觉得这些概念性的东西书本上都有并且说的也很详细写来也无用,今天突发奇想想写 一写,下面就和大家讨论一下虚基类、虚函数与纯虚函数,一看名字就让人很容易觉得混乱。不过不要紧待看完本文后你就会理解了。正文 虚基类 在说明其作用前先看一段代码classA{public:intiValue;};classB:publicA{public:voidbPrintf(){cout<<"ThisisclassB"<<endl;};};classC:publicA{public:voidcPrintf(){cout&l 阅读全文
posted @ 2013-01-12 00:17 一个人的天空@ 阅读(5055) 评论(0) 推荐(1) 编辑
摘要: 虚函数:目的:为了引起晚绑定实现方法:在声明函数时使用virtual关键字纯虚函数:目的:提供抽象的接口实现方法:virtual int foo()=0;特点:如果一个类中包含纯虚函数,则该类的VTABLE是不完整的,故而无法生成该类的对象。这样的类称为纯抽象基类纯抽象基类,也称为纯虚类:目的:提供抽象的接口实现方法:包含纯虚函数特点:不能生成该类的对象虚基类:目的:为了消除二义性实现方法:virtual继承特点:一个类既可以作为某个类的虚基类,也可以作为另一个类的非虚基类。 阅读全文
posted @ 2013-01-12 00:16 一个人的天空@ 阅读(409) 评论(0) 推荐(1) 编辑
摘要: 虚函数的应用特性例:编写三个类:没有虚函数、有一个虚函数、有两个虚函数,在主函数中定义这三个类的对象,分别取这个类所占的内存空间的大小,观察在内存中的分配; 代码如下:/**//*************************************************************************虚函数的应用特性例子************************************************************************/#include<iostream.h>//没有虚函数的类classCNoVirtual...{i 阅读全文
posted @ 2013-01-12 00:15 一个人的天空@ 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 纯虚类有以下特征:含有一个纯虚函数的类,叫做纯虚类。纯虚类不可以定义对象。我个人觉得这个说法应该就是把纯虚类的主要特点说明了:1、只要有一个纯虚函数。就称为纯虚类。所以如果子类没有实现纯虚函数,相当子类也有纯虚函数,所以子类也是纯虚类。2、其他类的定义与使用方式都与一般的类差不多。大致有如下地方:纯虚类可以有成员变量 (可以)纯虚类可以有普通的成员函数(可以)纯虚类可不可以有其他虚函数(可以)纯虚类可不可以又带有参数的构造函数? (可以)可不可以在纯虚类的派生类的构造函数中显式调用纯虚类的带参数构造函数(可以)3、使用方式上:不可以定义一个对象。下面是另外一篇文章中说的说法:(纯虚类也称为抽象 阅读全文
posted @ 2013-01-12 00:15 一个人的天空@ 阅读(2537) 评论(0) 推荐(0) 编辑
摘要: 虚基类的作用当一个基类被声明为虚基类后,即使它成为了多继承链路上的公共基类,最后的派生类中也只有它的一个备份。例如:classCBase { };class CDerive1:virtual public CBase{ };class CDerive2:virtual public CBase{ };class CDerive12:public CDerive1,CDerive2{ };则在类CDerive12的对象中,仅有类CBase的一个对象数据虚基类的特点: 虚基类构造函数的参数必须由最新派生出来的类负责初始化(即使不是直接继承); 虚基类的构造函数先于非虚基类的构造函数执行。重写“C+ 阅读全文
posted @ 2013-01-12 00:14 一个人的天空@ 阅读(530) 评论(0) 推荐(0) 编辑