首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次: c ...
分类:
编程语言 时间:
2018-07-14 13:04:06
阅读次数:
127
1.纯虚函数 virtual ReturnType Function()= 0; 纯虚函数可以让类先具有一个操作名称,而没有操作内容,让派生类在继承时再去具体地给出定义。凡是含有纯虚函数的类叫做抽象类。这种类不能声明对象,只是作为基类为派生类服务。除非在派生类中完全实现基类中所有的的纯虚函数,否则, ...
分类:
编程语言 时间:
2018-07-08 01:03:59
阅读次数:
169
C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数。 1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数; 2 ...
分类:
编程语言 时间:
2018-07-08 00:28:41
阅读次数:
171
1 //纯虚函数的学习 2 //由于纯虚函数的在类中并没有给出函数定义,因此要求其派生类中必须覆盖该纯虚函数,并给出该纯虚函数的函数定义体 3 #include 4 5 class Shape{ 6 public: 7 virtual void draw()=0; 8 }; 9 10 11 clas... ...
分类:
编程语言 时间:
2018-07-01 18:20:02
阅读次数:
162
一.初始化列表(初始化列表中必须有的两个内容) 1.类中const的成员变量: ①特点:不能修改 必须初始化 在构造函数后面加冒号 格式为:“:变量名(值)” 也就是说 常量必须在初始化列表中初始化 ②执行顺序:构造函数先执行初始化列表 然后执行函数中的内容 2.组合关系的类中的构造函数有参数: ① ...
分类:
编程语言 时间:
2018-06-18 16:09:11
阅读次数:
193
前言 最近面试的时候面试官问了这样的问题,自己虽然大致知道他们之间的区别,但当时面试时有些逻辑混乱。所以面试完想好好总结一番。 虚函数 C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。简要来说就是子类可以重写父类的虚函数实现子类的特殊化 纯虚函数 C++中包 ...
分类:
其他好文 时间:
2018-06-17 00:14:45
阅读次数:
188
【注意】我们也可以为纯虚函数提供定义,不过函数体必须在类的外部,也就是说,我们不能再内部为一个=0思网函数提供函数体。 C++中含有(或未覆盖直接继承)纯虚函数的类是抽象基类,抽象基类负责定义接口,而后续的的其他类可以覆盖接口。我们不能直接出创建一个抽象基类的对象。 C++中的纯虚函数更像是“只提供 ...
分类:
编程语言 时间:
2018-05-31 21:09:50
阅读次数:
187
我们在 C++ 的学习中,在进行面向对象分析时,会发现一些抽象的概念。那么在面向对象的语言中,它们是怎么进行描述的呢?比如图形的面积该如何计算?图形可以分为矩形、圆形等。动物都有什么属性?比如老虎、狮子等。那么在现实中需要知道具体的图形类型才能求面积,所以对概念上的“图形”求面积是没有意义的!此时的 Shape 只是一个概念上的类型,没有其具体对象!那么 Shape 类有存在的必要吗?下来我们来说说面向对象中的抽象类:a> 可用于表示现实世界中的抽象概念;b> 是一种只能定义类型,而不能产生对象的类;c> 只能被继承并重写相关函数;d> 直接特征是相关函数没有完整的实现。Shape 是现实世界中各种图形的抽象概念,因此:程序中必须能够反映抽象的图形;程序中通过抽象类表示图形的概念;抽象类不能创建对象,只能用于继承。在 C++ 语言中没有抽象类的概念,可通过纯虚函数来实现抽象类。纯虚函数是指只定义原型的成员函数,如果一个 C++ 类中存在纯虚函数便就成为了抽象类。
分类:
编程语言 时间:
2018-05-31 11:28:58
阅读次数:
163
CBaseThread类 BaseThread.h BaseThread.cpp BaseCallBack.h ...
分类:
编程语言 时间:
2018-05-28 11:45:59
阅读次数:
161
导出C++类(纯虚函数和虚函数) 大致做法就是为 class 写一个 warp ,通过 get_override 方法检测虚函数是否被重载了,如果被重载了调用重载函数,否则调用自身实现,最后导出的时候直接导出 warp 类,但是类名使用 class ,析构函数不需要导出,因为它会被自动调用 纯虚函数 ...
分类:
编程语言 时间:
2018-05-25 13:32:23
阅读次数:
249