C++面向对象高级编程(上)学习笔记

虚函数与多态

1、虚函数

1、虚函数只要在任何一个成员函数之前加上virtual,成员函数就成为了虚函数;
2、继承,子类可以把父类所有的东西都继承下来,如数据、函数;其中,函数的继承继承的是调用权;
3、 成员函数可以分为三种,即非虚函数、虚函数和纯虚函数。具体如下:
这里写图片描述
应用典例:
打开文件的过程
这里写图片描述
众多类型文件的打开的过程,除了打开文件不清楚以外,其他的过程都是清楚的。因此考虑先把可以搞清楚的写出来。写好如下:
这里写图片描述
模拟过程如下:
1、在main里面先创建一个myDoc对象
2、通过子类对象调用父类的函数,其中语句myDoc.OnFileOpen();被编译器理解为:CDocument::OnFileOpen(&myDoc);
3、函数开始执行父类CDocument::OnFileOpen()的语句,直到执行到Serialize();
4、编译器发现父类中没有实现Serialize(),但子类中含有Serialize()的实现,转而执行子类中的函数;
5、执行完毕再转回执行父类,直到结束;

具体代码如下:
这里写图片描述
说明:
1、经典的Application framework部分的做法又称Template Method。此为大名鼎鼎的23个设计模式之一;

Inheritance+Composition关系下的构造和析构

这里写图片描述
图中,从内存的角度,前一个可以表述为:子类中既有父类的成分,又有复合在里面;
后一个为父类中复合,然后子类整体继承。
针对于前者,它的构造和析构的过程如下,具体的分析如下:
这里写图片描述

2、经典例子

2.1 Delegation+Inheritance

解决存储与观察的问题,情景如下:
1、文件只有一个,观察的窗口有4个;
2、一组数据,用三种方式观察(见右下角)。
这里写图片描述
经典解法:
这里写图片描述
左为存储数据,右为观察数据
左边重要的语句为:
这里写图片描述
右边重要的语句为:
这里写图片描述

另一个例子(Composite解法):

设计对话框一类的,既可以嵌套自身,又可以嵌套其他内容的东西。
经典设计方法(Composite解法):
这里写图片描述
说明:
容器里面要放一样大小的东西,当装的东西有所不同时,要使用指针
具体代码如下:
这里写图片描述
其中,考虑到,子类中Private 不能进行加的动作,但又必须继承父类的add函数,因此,折中的做法是,父类中的add函数是空的虚函数,而非其他两种。
这里写图片描述
这里写图片描述

例子(Prototype):

要创建一个继承体系,想创建未来才会使用到的的class,在不知道未来子类的名称的情况下,怎么让子类自己创造自己
这里写图片描述
其中,下划线表示是静态,负号表示成员函数为Private,正号(默认不写)表示public,#表示protected.

父类代码:
这里写图片描述
子类代码:
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生就业服务平台管理系统按照操作主体分为管理员和用户。管理员的功能包括学生档案管理、字典管理、试卷管理、试卷选题管理、试题表管理、考试记录表管理、答题详情表管理、错题表管理、法律法规管理、法律法规收藏管理、法律法规留言管理、就业分析管理、论坛管理、企业管理、简历管理、老师管理、简历投递管理、新闻资讯管理、新闻资讯收藏管理、新闻资讯留言管理、学生信息管理、宣传管理、学生管理、职位招聘管理、职位收藏管理、招聘咨询管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生就业服务平台管理系统可以提高大学生就业服务平台信息管理问题的解决效率,优化大学生就业服务平台信息处理流程,保证大学生就业服务平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理新闻信息,管理大学生就业服务平台信息,包括考试管理,培训管理,投递管理,薪资管理等,可以管理新闻信息。 考试管理界面,管理员在考试管理界面中可以对界面中显示,可以对考试信息的考试状态进行查看,可以添加新的考试信息等。投递管理界面,管理员在投递管理界面中查看投递种类信息,投递描述信息,新增投递信息等。新闻信息管理界面,管理员在新闻信息管理界面中新增新闻信息,可以删除新闻信息。新闻信息类型管理界面,管理员在新闻信息类型管理界面查看新闻信息的工作状态,可以对新闻信息的数据进行导出,可以添加新新闻信息的信息,可以编辑新闻信息信息,删除新闻信息信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值