前几天跟同事brainstorm,讨论一个关于纯虚类的使用问题,挺有意思。回来心中久久不能平静,写出来一吐为快。
不论在C++中还是C#中,纯虚类都是不能实例化的,这是因为纯虚类其实是一个对业务类型的一种高度抽象,本质上是不存在这种东西的,所以也就不能实例化它。对于C++中只要类中含有一个纯虚函数就是纯虚类,而C#中是abstract修饰的类就是纯虚类,即使类中没有虚方法也可以是纯虚类,在这里我...
分类:
其他好文 时间:
2016-05-13 04:03:54
阅读次数:
166
虚函数的使用方法:
(1)在基类用virtual声明成员函数为虚函数。这样就可以在派生类中重新定义此函数,为它赋予新的功能,并能方便被调用。
在类外定义虚函数时,不必在定义virtual
(2)在派生类中重新定义此函数,要求函数名,函数类型,函数参数个数和类型全部与基类的虚函数相同,并根据派
生类的需要重新定义函数体。
c++规定,当一个成员函数被声明为虚函数后,其派生类的...
分类:
编程语言 时间:
2016-05-13 01:28:05
阅读次数:
188
新建Win32控制台空项目
设置项目属性如下:
添加文件 编写代码
头文件 MyApp.h
class CMyApp:public CWinApp
{
public:
virtual BOOL InitInstance();//虚函数
};
class CMainWindow:public CFrameWnd
{
public:
CMainWindow();...
分类:
编程语言 时间:
2016-05-13 01:06:32
阅读次数:
268
析构函数主要作用是对数据成员初始化。
1派生类的构造函数
派生类的构造函数定义的一般形式为:
派生类名::派生类名(基类所需形参,本类成员所需形参):基类1(基类1
参数表),基类2(基类2
参数表),···,基类n(基类n
参数表),对象成员1(对象1
参数表),对象成员2(对象2
参数表),···,对象成员m(对象m
参数表){
...
分类:
其他好文 时间:
2016-05-13 01:03:32
阅读次数:
162
面向对象编程
--定义基类和派生类[续]
四、virtual与其他成员函数
C++中的函数调用默认不使用动态绑定。要触发动态绑定,必须满足两个条件:
1)只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数,非虚函数不进行动态绑定。
2)必须通过基类类型的引用或指针进行函数调用。
1、从派生类到基类的转换
因为...
分类:
编程语言 时间:
2016-05-12 22:19:56
阅读次数:
249
面向对象编程
--纯虚函数、容器与继承
I.纯虚函数
在函数形参后面写上 =0 以指定纯虚函数:
class Disc_item : public Item_base
{
public:
double net_price(size_t) const = 0; //指定纯虚函数
};
将函数定义为纯虚函数能够说明,该函数为后代类型提...
分类:
编程语言 时间:
2016-05-12 22:18:20
阅读次数:
184
1.类型系统介绍对于面向对象编程的支持Go 语言设计得非常简洁而优雅。简洁之处在于,Go语言并没有沿
袭传统面向对象编程中的诸多概念,比如继承、虚函数、构造函数和析构函数、隐藏的 this 指
针等。
一个典型的类型系统通常包含如下基本内容:
基础类型,如 byte 、 int 、 bool 、 float 等;
复合类型,如数组、结构体、指针等;
可以指向任意对象的类型( Any 类型)...
分类:
编程语言 时间:
2016-05-12 20:35:32
阅读次数:
231
获取C++虚表地址和虚函数地址
By qianghaohao
学过C++的应该都对虚表有所耳闻,在此就不过多介绍概念了,通过实例来
演示一下如何获取虚表地址和虚函数地址。
简单说一下虚表的概念:在一个类中如果有虚函数,那么此类的实例中就有
一个虚表指针指向虚表,这个虚表是一块儿专门存放类的虚...
分类:
编程语言 时间:
2016-05-12 17:56:11
阅读次数:
262
多态性 多态性是面向对象程序设计的一个重要特征。如果一种语言只支持类而不支持多态,是不能被称为面向对象语言的。只能说是基于对象的,如Ada,VB就属于此类。 在C++程序设计中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。 在面向对象方法中一般是这样表述 ...
分类:
其他好文 时间:
2016-05-11 23:46:28
阅读次数:
171
1 公有继承 当派生类公有继承自 (public inheritance) 基类时,继承通常包含两个部分:一是函数的"接口" (interface),二是函数的"实现" (implementation) 如下,基类 Shape 中有三个不同形式的成员函数,分别代表公有继承的三种情况 1.1 纯虚函数 ...
分类:
编程语言 时间:
2016-05-11 21:55:31
阅读次数:
387