接口只能声明不能实现,虚函数可以。 接口:对外提供可以访问的函数叫接口。虚函数不需要被强制重写,其本身含有实现部分。 抽象类:指派了派生类必须实现的函数(纯虚函数),不然编译不通过。 虚函数的限制: 1.虚函数仅适用于有继承关系的类对象, 所以只有类的成员函数才能说明为虚函数. 2.静态成员函数不能 ...
在我个人学习继承的过程中,在网上查阅了许多资料,这些资料中有关菱形继承的知识都是加了虚函数的,也就是涉及了多态的问题,而我在那个时候并没有学习到多态这一块,所以看很多资料都是云里雾里的,那么这篇文章我想以我自己学习过程中的经验,由简到较难的先分析以下菱形继承,让初学者先对这个问题有一点概念,在后面会由浅入深的继续剖析。
本篇文章不会涉及到多态也就是虚函数的菱形继承,在后面的文章更新中,我...
分类:
编程语言 时间:
2016-04-12 17:32:38
阅读次数:
210
今天主要了解了一下C++虚函数和纯虚函数的用法。 C++的虚函数主要是用来实现多态,且多态分为两种,静态和动态。 静态多态,为编译时多态;动态多态,为运行时多态。 静态多态,由函数重载和运算符重载实现。 动态多态,由虚函数实现。 虚函数多态的实现主要是靠虚函数表来实现的。 详细内容参考:http:/ ...
分类:
编程语言 时间:
2016-04-11 18:34:47
阅读次数:
156
1.源代码#include<iostream>usingnamespacestd;classBase{public: virtualvoidFunTest() { cout<<"Base::FunTest()"<<this<<endl; } virtualvoidFunTest1() { cout<<"Base::FunTest1()"<<this<<endl; } virtualvoidFunTest2() { ..
分类:
其他好文 时间:
2016-04-11 07:33:58
阅读次数:
162
在定义和实现COM接口时,纯虚函数有不可替代的作用。举个例子,可能有些牵强,但是能说明问题。比如,我有一个类Animal,维护了一种动物形象,现在我要实现一个函数Draw,把这个动物画到任意一种介质上,这种介质可能是屏幕也可能是位图,当然,在屏幕和位图上画图形肯定是不一样的,那么,我的Draw函数肯 ...
分类:
其他好文 时间:
2016-04-09 20:39:14
阅读次数:
386
在delete的那个地方,没有#include相应的头文件,而只是用了class的前置声明; 或许delete的是基类指针,而编译器认识基类,所以没有加入子类的#include; 如果在delete子类对象时,要释放基类的内存,一定要记得将基类析构函数写为virtual ; 如果某个类不包含虚函数, ...
分类:
编程语言 时间:
2016-04-09 18:42:31
阅读次数:
574
菱形继承:Assitant的菱形继承对象模型Assitant中有两份Person成员,存在二义性和数据冗余。所以我们引出了虚拟继承。virtual虚继.不会在子类中创建父类成员,但是子类中可以引用,就像指针一样。主要用在菱形继承,也叫钻石继承。虚拟继承对象模型classStudent:vitrualpublicP..
分类:
其他好文 时间:
2016-04-07 18:40:26
阅读次数:
174
笔试 1、常规sizeof指针 2、前序遍历,中序遍历,后序遍历 3、指针传递返回差错 4、指针与引用 5、参数传递三种方式,多态用哪一种,为什么 6、设计模式的理解 7、c和c++结构体的不同 8、构造函数虚函数 9、多态怎么实现,画出基类和子类内存中的相互关系 10、抽象基类,纯虚函数 11、算 ...
分类:
其他好文 时间:
2016-04-06 09:39:43
阅读次数:
239
C++2.0以后全面支持虚函数与虚继承,这两个特性的引入为C++增强了不少功能,也引入了不少烦恼。虚函数与虚继承有哪些特性,今天就不记录了,如果能搞了解一下编译器是如何实现虚函数和虚继承,它们在类的内存空间中又是如何布局的,却可以对C++的了解深入不少。这段时间花了一些时间了解这些玩意,搞得偶都,不 ...
一、代码规范 1.代码风格规范:简明易读无二义,包括有意义的命名及增加注释 2.代码设计规范 (1)函数只做一件事,并且要做好 (2)错误处理。验证参数的正确性;使用断言;使用public,protected,private说明成员,非必要不使用虚函数和类型继承 3.代码复审 二、结对编程好处 1. ...
分类:
其他好文 时间:
2016-04-03 18:53:10
阅读次数:
108