定义 纯虚函数就是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后面加“=0” 引入原因 方便的使用多态,因此常常在基类中定义虚函数 在很多情况下,基类本身生成对象是不合理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,蛋动物本身生成对象明显不合常理。 为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(virtual ReturnType Function() = 0),则编译器要求在派生类中必须予以重写以实现多
抽象类是特殊的类,只是不能被实例化(将定义了纯虚函数的类称为抽象类);除此以外,具有类的其他特性;抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。
(为了方便记忆可以想成)被 const 修饰(在 const 后面)的值不可改变,如下文使用例子中的 p2、p3。
《Effective C++》条款三十四:区分接口继承和实现继承中介绍的比较啰嗦,概括地说需要理解三点: (1)纯虚函数只提供接口继承,但可以被实现; (2)虚函数既提供接口继承,也提供了一份默认实现,即也提供实现继承; (3)普通函数既提供接口继承,也提供实现继承。 这里假定讨论的成员函数都是public的。
为什么说虚函数是C++最重要的特性之一呢,因为虚函数承载着C++中动态联编的作用,也即多态,可以让程序在运行时选择合适的成员函数。虚函数必须是类的非静态成员函数(且非构造函数),其访问权限是public。那么: (1)为什么类的静态成员函数不能为虚函数? 如果定义为虚函数,那么它就是动态绑定的,也就是在派生类中可以被覆盖的,这与静态成员函数的定义(在内存中只有一份拷贝,通过类名或对象引用访问静态成员)本身就是相矛盾的。
1.目的: /*//修改--5-16-关于球体表面积和体积公式错误*/ /*设计一个计算图形面积的类库。 类库的顶层是一个抽象类,并且提供三个纯虚函数;显示数据成员、返回面积和返回体积。 Class Shape { virtual void showData()=0; virtual double reArea()=0; virtual double reVolume()=0; }; 第二层由Shape类派生TwoDimShape(二维图形)和ThreeShape(三维图形), 它们增加了有关的数据成员
不过从我对文档的理解来看,感觉更像是添加的一种硬件后端(代理我想应该只是调用调用层面,不是底层实现,另外在Hexagon DSP的委托代理部分,文档坦言说Hexagon DSP的代理就是为了补充NNAPI,特别是针对那些NNAPI不可用DSP加速的、老旧驱动的设备,毕竟这些老旧设备也没有NNAPI这个东西,但有DSP硬件),交给模型的子图来去执行。比方原始模型的CPU执行Graph如上图。交给GPU的委托代理后,原Graph变为下面这样:
自认为这篇笔记是比较全面的总结,不管你是已经工作准备参加社招,还是在校学生准备参加校招,笔记都可以作为技术面试准备阶段参考查阅,查缺补漏。
虽然说是拾遗,但是这里有一大部分是我以前没有看过的,简书的markdown不支持生成目录,可能需要手动来一个了。
抽象类和接口 什么是抽象类 用来表示现实世界中的抽象概念 是一种只能定义类型,而不能产生对象的类 只能被子类继承,且抽象类的相关成员函数没有完整的体现,用来被子类重写. 比如图形(Shape)类, 就是一个抽象的概念,因为我们无法计算这个“图形”的面积,所以它的成员函数area()是空的。 而继承它的子类(矩形,圆形,三角形等)就可以去重写area()成员函数. 里面通过数学公式,计算出面积. 参考图形(Shape)类,代码如下: class Shape { public: double ar
在上一则教程中,叙述了关于C++类型转换的相关内容,在本节教程中,将叙述 C++的另一个内容,也就是抽象,这也是 C++相对于 C语言来说独特的一点,下面我们就来着重叙述这一点。
在腾讯云上制作云服务器系统镜像都需要用户手动进行,主要有以下几个步骤:1.创建一台云服务器2.登录到机器上安装软件3.关机制作镜像4.同步镜像到其他地域。这个手动的过程非常繁琐、耗时、容易出错,并且一旦有软件更新就需要重新制作,整个过程又需要重复一次。
C++按照实现的时机分为编译时多态和运行时多态 1.编译时多态也成为静态连编,是指程序在编译的时候就确定了多态性,通过重载机制实现 2运行时多态又称为动态联编,是指必须在运行中才能确定的多态性,通过继承和虚函数实现
概念:对某个方法引用的一种引用类型变量。注意看概念, 委托是一种引用类型变量, 类型变量,因此可以将委托当作方法的参数进行传递。 通俗点来讲,委托有点像方法的快捷方式, 通过委托可以执行方法。
一、纯虚函数 纯虚函数一种特殊的虚函数,在许多情况下在基类中不对虚函数做出有意义的实现,而是把它定义为纯虚函数,它的实现由派生类实现 格式:virtual 返回类型 函数名(参数列表)=0; 注意事项 纯虚函数不能实现,没有函数体,其实现由子类去实现各自的功能版本 纯虚函数可以在任何访问域下 包含纯虚函数的类还可以包含其他成员/方法 纯虚函数可以不在派生类中实现,则派生类接着作为抽象类存在 析构函数不能为纯虚函数,因为拥有纯虚函数的类的派生类对象在释放时,会调用基类的析构函数 二、抽象类 包含纯虚函数的类
这种机制就叫做“多态”,说白点就是调用哪个虚函数,取决于指针对象指向哪种类型的对象。
part1讲述了基于对象,part2则是在基于对象的基础上,建立类与类之间的联系,即面向对象编程以及面向对象设计。
*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5,&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)
(1)声明与定义格式 一般是类内声明,类外定义,虽然可以在类内定义,但 写前面堆一堆不好看!!! 类内声明:
领取专属 10元无门槛券
手把手带您无忧上云