抽象类:

     **有些函数由于信息不够具体,而无法实现**

由此而来的纯虚函数:在基类中声明的纯虚函数,在基类中无法实现(是因为在基类中定义的信息不够具体,不是学的知识不够),于是这个函数没办法规定具体的算法,但是为了规定整个类家族的统一的行为和对外接口,又需要再比较高层次的基类中定义这么一个函数。

在函数头之后接一个=0,表示没有函数体

只要是带有纯虚函数的类都叫抽象类,因为这样的类它还没有些东西没有实现,所有不能产生实例,抽象类不能定义对象。

通过基类指针可以接收不同派生类对象的地址,然后去调用在基类中定义过的这个函数名,就是配合着虚函数这种动态绑定机制去利用多态性的一种很好的方式。

若派生类不能实现那些在基类中没有实现的纯虚函数,派生类仍然继续作为抽象类,还是没办法实例化,定义对象。

抽象类是用来作为基类使用的,不能定义对象,其作用是用来规定整个类家族的统一对外接口和必须具有的功能。

override:

     多态行为的基础:基类声明一个虚函数派生类声明一个函数覆盖该虚函数,要求:函数原型完全一样

override就是用来防止开发者在使用多态时,在派生类中需要覆盖的函数与原型不同或漏写参数,在函数前加上override,编译器就会自动去基类中查找相同原型的函数,找不到则报错

final

继承意味着一定要对它进行修改,不修改的话直接使用即可,与现实世界中的继承不同。

当不希望功能被修改时,需要使用final,它并不是关键字,但可以当关键字理解。

在类名后加final,表明该类不允许被继承。

在函数名后加final,表明函数不允许被覆盖,即不允许被重写

编译器会生成适合这种数据类型的数据容器以及算法函数

函数模板:针对算法逻辑相同,参数不同

针对多个几乎一样的函数体

函数模板不可以直接被调用,是编译器依据函数模板去生成一个函数

类模板:

template <模板参数类>
class 类名
{类成员声明}

在类模板以外定义成员函数,都要带上template<模板参数表>,其他部分相同

抽象类,override,final和类模板的更多相关文章

  1. 抽象类、final关键字、多态

    1.1 抽象类 1.1.1 抽象类概念 C extends B,B extends A,在继承过程中,形成一个继承金字塔,位于金字塔底部的类越来越具体(强大),位于塔顶的越来越抽象(简单). 例如:人 ...

  2. 抽象类和final

    抽象类: 概念:在继承过程中,形成一个继承金字塔,位于金字塔底部的类越来越具体(强大),位于塔顶的越来越抽象(简单). 关键字  :abstract 抽象类特性: [1]抽象类过于抽象,实例化后无语义 ...

  3. 第10课 面向对象的增强(default/delete、override/final)

    一.default和delete关键字 (一)编译器提供的“缺省函数” 1.类的成员函数:构造/析构函数.复制构造/复制赋值函数.移动构造/移动赋值函数. 2. 类的全局默认操作函数:operator ...

  4. Java入门教程十(抽象类接口内部类匿名类)

    抽象类(abstract) 一个类只定义了一个为所有子类共享的一般形式,至于细节则交给每一个子类去实现,这种类没有任何具体的实例,只具有一些抽象的概念,那么这样的类称为抽象类. 在面向对象领域,抽象类 ...

  5. java自学第3期——继承、多态、接口、抽象类、final关键字、权限修饰符、内部类

    一.继承: 关键字extends /* 定义一个父类:人类 定义父类格式:public class 父类名称{ } 定义子类格式:public class 子类名称 extends 父类名称{ } * ...

  6. c++ 11 override final

    C++ 11添加了两个继承控制关键字:override和final. override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名.final阻止类的进一步派生和虚函数的进一步重载

  7. Java 抽象类和Final关键字

    抽象类 用abstract关键字来修饰一个类时,这个类叫抽象类: 用abstract关键字来修饰一个方法时,该方法叫做抽象方法. 含有抽象方法的类必须被定义而为抽象类,抽象类必须被继承,抽象方法必须被 ...

  8. 【转】C++ 虚函数&纯虚函数&抽象类&接口&虚基类

    1. 动态多态 在面向对象语言中,接口的多种不同实现方式即为多态.多态是指,用父类的指针指向子类的实例(对象),然后通过父类的指针调用实际子类的成员函数. 多态性就是允许将子类类型的指针赋值给父类类型 ...

  9. C++ 虚函数&纯虚函数&抽象类&接口&虚基类(转)

    http://www.cnblogs.com/fly1988happy/archive/2012/09/25/2701237.html 1. 多态 在面向对象语言中,接口的多种不同实现方式即为多态.多 ...

随机推荐

  1. Arcgis Runtime 100.3开发实例源代码调试日志

    Arcgis Runtime 100.3开发实例源代码调试日志 路径: "D:\arcgis runtime1003\arcgis-runtime-samples-dotnet-master ...

  2. Uni2D 入门 -- Skeletal Animation

    转载 csdn http://blog.csdn.net/kakashi8841/article/details/17615195 Skeletal Animation Uni2D V2.0 引进了一 ...

  3. Java8给出一个时间段,计算该时间范围由哪些日期(天)和月份组成

    1. 判断时间段是否合法: 2. 循环判断记录数是否大于0 3. 根据起始时间算出该月的第一天.最后一天和这个月有多少天: 4. 判断起始时间是否是该月第一天,如果是,再判断结束时间与该月最后一天的大 ...

  4. 弹窗切换page进行关闭

    beforeRouteLeave(to,from,next){ //这里写关闭弹窗 // 这里跳转路由 MessageBox.close(); next() // next()别漏,不然不跳转 }

  5. Linux部署项目

    1 安装jdk 第一步:获取Linux系统中jdk安装包和tomcat安装包(后面要用,所以上传两个) 第二步:使用secureCRT客户端工具连到服务器 第三步:使用命令创建一个目录,作为软件的安装 ...

  6. CentOS 6.3开机启动服务及自动联网

    虚拟机设置选择NAT模式,默认情况下,CentOS不是自动连接上网的,要点击右上角有个电脑图标,选择system eth0进行连接, 可以修改开机启动配置只需修改:/etc/sysconfig/net ...

  7. SVN Commit:将本地代码更新到服务器代码

    1.点击客户端“TortoiseSVN” 选中后显示: 点击Import: 点击“ok”:

  8. jvm参考网页

    --------------------------------------------- https://www.e-learn.cn/content/wangluowenzhang/37475 h ...

  9. Python 继承与多继承

    相关知识点: __class__.__name__的用法. >>> class ABC: def func(self): print('打印类名:',__class__.__name ...

  10. JMeter学习(十二)分布式部署(转载)

    转载自 http://www.cnblogs.com/yangxia-test Jmeter 是java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有 ...