[笔记] 《我的第一本c++书》
函数
- 优秀函数的五个要点

- 函数的返回值:直接返回和间接返回(指针)
- 在函数的入口处对参数有效性进行检验:if语句,断言(assert)
- 如果函数有返回值,不可返回一个指向函数体内局部对象的指针或引用
- 函数的功能要单一
面向对象
- 60年代软件危机:在软硬件系统逐渐复杂的情况下,软件如何得到良好的设计和维护
- 结构化程序设计方法(60-80年代):提出问题,把一个大问题划分为几个小问题,即各个子模块,解决每个子模块,最后通过主函数按照某种次序调用子模块(自顶向下、逐步求精)

优点:
- 程序仅由三种基本结构组成:顺序、选择、循环
- 分而治之、各个击破
- 自顶向下、逐步求精
缺点:
- 数据和操作相互分离:如果数据的格式发生变化,相应的操作函数就要重写
- 难以扩展:扩展功能涉及模块的重新划分,需大量改写原来函数
- 难以复用:模块与具体应用环境结合紧密,旧有的模块难以在新程序中复用
- 面向对象程序设计方法:现实世界是由许多彼此相关并互通信息的实体——对象(object)组成,而每个对象都由两部分组成,描述对象属性的数据和描述对象行为的函数(方法)。数据和函数紧密结合共同构成对象描述现实世界
- 特点:
- 封装:对象使数据和操作紧密结合
- 继承:支持代码复用

- 多态:使得不同结构的对象可以共享相同的外部接口

- 优点
- 容易设计、维护:代码符合认识规律,易于理解,可读性高
- 复用设计和代码,系统质量高:继承和多态
- 容易扩展

- 类成员的访问权限

- 友元:让外界函数或类能访问某个类的隐藏信息
- 当一个类的两部分有不同数量的实例或不同的生命周期时,为了保持类的“高内聚”,经常需要将一个类分割成两部分,即两个类,这样两个类就需要直接存取彼此的数据,最安全的途径就是将它们定义为彼此的友元
- 抽象与封装:从现实中的具体事物到类

- 继承:不断具体化,不断传承基类的属性和行为,并发展自己特有的属性和行为的过程
- 三种进化方式:
- 保留基类的属性和行为:Human和Teacher
- 改进基类的属性和行为:Student和Pupil类都有DoHomework()
- 添加新的属性和行为:
- 派生方式
- public:类型继承。派生类是基类的一个子类型,基类所有成员的访问级别在派生类中不做改变(is-a)
- private:实现继承。把基类的公有成员变成自己的私有成员
- protected:把基类的所有公有成员变成protected类型,保护基类的所有接口不被外界访问
- 使用规范
- 拥有派生关系的两个类必须相关:不可为了让“人”具有“飞行”的行为,而让“人”从“鸟”派生
- 不要把组合当成继承:若A是B的“一部分”,则不允许B继承A的功能,如键盘、鼠标是电脑的一部分,但电脑不能由键盘或鼠标派生
- 多态:大多数情况下派生类是基类的“一种”,如学生是人的一种,“教室里有多少人?”其实代表“教室里有多少学生?”,又比如“上车的人请买票”,都是在用基类指代派生类。但有时派生类会有对基类的行为进行自定义的需要,这时就要用到虚函数
- 如果派生类对虚函数重新定义,那么通过基类指针调用的就是具体对象的虚函数
- 当类中有纯虚函数时就成了一个抽象类,仅用于对外界提供公有接口
[笔记] 《我的第一本c++书》的更多相关文章
- HTML+CSS笔记 CSS笔记集合
HTML+CSS笔记 表格,超链接,图片,表单 涉及内容:表格,超链接,图片,表单 HTML+CSS笔记 CSS入门 涉及内容:简介,优势,语法说明,代码注释,CSS样式位置,不同样式优先级,选择器, ...
- CSS笔记--选择器
CSS笔记--选择器 mate的使用 <meta charset="UTF-8"> <title>Document</title> <me ...
- HTML+CSS笔记 CSS中级 一些小技巧
水平居中 行内元素的水平居中 </a></li> <li><a href="#">2</a></li> &l ...
- HTML+CSS笔记 CSS中级 颜色&长度值
颜色值 在网页中的颜色设置是非常重要,有字体颜色(color).背景颜色(background-color).边框颜色(border)等,设置颜色的方法也有很多种: 1.英文命令颜色 语法: p{co ...
- HTML+CSS笔记 CSS中级 缩写入门
盒子模型代码简写 回忆盒模型时外边距(margin).内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左. 语法: margin:10px 15p ...
- HTML+CSS笔记 CSS进阶再续
CSS的布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上, ...
- HTML+CSS笔记 CSS进阶续集
元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1&g ...
- HTML+CSS笔记 CSS进阶
文字排版 字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性. 语法: body{font-family:"宋体";} 这里注意不要设置不常用的字体,因为如果 ...
- HTML+CSS笔记 CSS入门续集
继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代(标签). 语法: p{color:red;} <p> ...
- HTML+CSS笔记 CSS入门
简介: </span>年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的<span>脚本解释程序</span>,作为ABC语言的一种继承. & ...
随机推荐
- 折腾kubernetes各种问题汇总-<1>
折腾kubernetes各种问题汇总-<1> 折腾部署fluend-elasticsearch日志,折腾出一大堆问题,解决这些问题过程中,感觉又了解了不少. 如何删除不一致状态下的rc,d ...
- ASP.NET扩展库之Http日志
最佳实践都告诉我们不要记录请求的详细日志,因为这有安全问题,但在实际开发中,请求的详细内容对于快速定位问题却是非常重要的,有时也是系统的强力证据.Xfrogcn.AspNetCore.Extensio ...
- OO_Unit4_Summary暨课程总结
初始oo,有被往届传言给吓到:oo进行中,也的确有时会被作业困扰(debug到差点放弃):而oo即将结束的此刻,却又格外感慨这段oo历程. 一.单元架构设计 本单元任务是设计一个UML解析器,能够支持 ...
- ternux的ssh和ftp
ssh的连接 pkg install ssh ssh -p 8022 username@hostname_ip ftp的创建 安装python 升级pip python -m pip install ...
- 华为分析+App Linking:一站式解决拉新、留存、促活难
移动互联网时代,用户注意力稀缺,"如何让用户一键直达APP特定页面"越来越受到产品和运营同学的关注. 比如在各个渠道投放了APP安装广告,希望新用户下载APP首次打开时直接进入活动 ...
- 现代操作系统原书第3版.mobi
电子书资源:现代操作系统原书第3版 书籍简介 本书是操作系统领域的经典之作,与第2版相比,增加了关于Linux.Windows Vista和Symbian操作系统的详细介绍.书中集中讨论了操作系统 ...
- Day02_15_方法重载
方法重载 1.什么是方法重载? * 方法重载又被称为 OverLoad,是指在同一个类中,具有相同方法名的不同方法,各个方法虽然方法名相同,但是各自的形式参数不同. 2.什么时候考虑使用方法重载? * ...
- 1.6.5- HTML之自定义列表
定义列表常用于对术语或名词进行解释和描述,定义列表的列表项前没有任何项目符号,其基本语法如下: <dl> <dt>定义标题</dt> <dd>定义描述, ...
- 07- HTTP协议详解及Fiddler抓包
HTTP协议简介-超文本传输协议 HTTP协议是请求/响应协议:客户端发送请求到服务器,服务器响应该请求.当前版本为1.1版本. HTTP协议特点 1.简单快速:客户向服务器请求服务时,只需传送请求方 ...
- 技术面试问题汇总第003篇:猎豹移动反病毒工程师part3
从现在开始,面试的问题渐渐深入.这次的三个问题,都是对PE格式的不断深入的提问.从最初的概念,到病毒对PE格式的利用,再到最后的壳的问题.这里需要说明的是,由于壳是一个比较复杂的概念,面试中也仅仅只能 ...