博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++学习笔记11--纯虚函数和抽象类
阅读量:5745 次
发布时间:2019-06-18

本文共 1552 字,大约阅读时间需要 5 分钟。

  纯虚函数:没必要或者不应该有函数体的虚函数,用"=0;"来取代函数体。有纯虚函数的类称为抽象类(缺少函数体),不允许直接用抽象类来创建对象。抽象类总数用来作为父类,由子类来实现(覆盖)那些纯虚函数,从而可以创建子类类型的对象。子类对象可以当成父类对象的引用,或者可以用父类指针指向子类对象。

  ×××××使用多态时必须通过父亲指针或者引用来访问子对象,而不能重建一个父类对象×××× 

  抽象类:为了抽象和设计的目的而建立的,处于继承层次结构的上层。

    具体类是能够建立对象的类。

    抽象类的规定

      (1)抽象类只能用作其他类的基类,不能建立抽象类对象。

      (2)抽象类不能用作参数类型、函数返回类型或显式转换的类型。

      (3)可以定义指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。

#include
using namespace std;#include
class Graph{
//抽象类 int x; int y;public: Graph(int x,int y):x(x),y(y){} virtual double area()=0; //纯虚函数 virtual string Type()=0; //纯虚函数 void show(){ cout <
<< "位置("<
<<","<
<<"),面积"<
<

 

       练习:写一个Coder类,有两个纯虚函数code和decode 写一个rm类和一个divx类,分别继承coder类并且实现那两个纯虚函数。写一个File类,有一个setcoder函数、zip函数和unzip函数。在main函数中使用这些类的对象

#include 
using namespace std;#include
class Coder{public: virtual void code(char* input,char* output) =0; virtual void decode(char* input,char* output) =0; Coder(){}};class rm:public Coder{public: void code(char* input,char* output){ cout<<"RM编码!"<
code(source,result); cout<<"保存到文件中"<
code(source,result); cout<<"播放文件"<

    多态也称为动态绑定、晚绑定、运行时绑定。统一接口,便于替换和维护。

    通过父类指针动态释放子类对象时,默认调用父类析构。如果希望使用多态调用对象所属的子类的析构函数,应该在父类中把析构也声明为虚函数 

    

#include
using namespace std;class A{public: A(){cout<<"A()"<

 

转载于:https://www.cnblogs.com/visions/p/5490952.html

你可能感兴趣的文章
11月TIOBE编程语言排行榜,OC已经掉出前十
查看>>
系统挂了,记录一下备份的东西
查看>>
Python多线程登录远端linux执行操作命令
查看>>
通往全栈工程师的捷径 —— react
查看>>
test命令
查看>>
C语言step-by-step(二)(数据类型)
查看>>
调查:2013年十大急需的热门IT技能
查看>>
PPTP脚本自动安装
查看>>
删除记录时的提示效果4-13
查看>>
VirtualBox中使用CoreOS的ISO镜像安装CoreOS
查看>>
我的友情链接
查看>>
百度“认证”上线,打造权威网站
查看>>
Server-U迁移
查看>>
取消Toolbar菜单长按时,出现的toast
查看>>
maven pom.xml配置,自己存着
查看>>
回眸2014年
查看>>
字符串常量存在何处
查看>>
greybox使用说明
查看>>
破解Python开发工具wingide-5
查看>>
不喜欢括号
查看>>