zoukankan      html  css  js  c++  java
  • [笔记] 《我的第一本c++书》

    函数

    • 优秀函数的五个要点

    • 函数的返回值:直接返回和间接返回(指针)
    • 在函数的入口处对参数有效性进行检验:if语句,断言(assert)
    • 如果函数有返回值,不可返回一个指向函数体内局部对象的指针或引用
    • 函数的功能要单一

    面向对象

    • 60年代软件危机:在软硬件系统逐渐复杂的情况下,软件如何得到良好的设计和维护
    • 结构化程序设计方法(60-80年代):提出问题,把一个大问题划分为几个小问题,即各个子模块,解决每个子模块,最后通过主函数按照某种次序调用子模块(自顶向下、逐步求精)

     优点:

      • 程序仅由三种基本结构组成:顺序、选择、循环
      • 分而治之、各个击破
      • 自顶向下、逐步求精

     缺点:

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

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

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

    • 类成员的访问权限

     

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

    • 继承:不断具体化,不断传承基类的属性和行为,并发展自己特有的属性和行为的过程
    • 三种进化方式:
      • 保留基类的属性和行为:Human和Teacher
      • 改进基类的属性和行为:Student和Pupil类都有DoHomework()
      • 添加新的属性和行为:
    • 派生方式
      • public:类型继承。派生类是基类的一个子类型,基类所有成员的访问级别在派生类中不做改变(is-a)
      • private:实现继承。把基类的公有成员变成自己的私有成员
      • protected:把基类的所有公有成员变成protected类型,保护基类的所有接口不被外界访问
    • 使用规范
      • 拥有派生关系的两个类必须相关:不可为了让“人”具有“飞行”的行为,而让“人”从“鸟”派生
      • 不要把组合当成继承:若A是B的“一部分”,则不允许B继承A的功能,如键盘、鼠标是电脑的一部分,但电脑不能由键盘或鼠标派生
    • 多态:大多数情况下派生类是基类的“一种”,如学生是人的一种,“教室里有多少人?”其实代表“教室里有多少学生?”,又比如“上车的人请买票”,都是在用基类指代派生类。但有时派生类会有对基类的行为进行自定义的需要,这时就要用到虚函数
    • 如果派生类对虚函数重新定义,那么通过基类指针调用的就是具体对象的虚函数
    • 当类中有纯虚函数时就成了一个抽象类,仅用于对外界提供公有接口
  • 相关阅读:
    原生代码实现Promise
    HTTP与HTTPS的区别
    windows常用命令-长期更新
    git 常用命令
    原型和原型链
    vue 中一些API 或属性的常见用法
    移动端屏幕适配
    Nuxt.js(开启SSR渲染)
    vue+element-ui 实现分页(根据el-table内容变换的分页)
    vue中引入jQuery和bootstrap
  • 原文地址:https://www.cnblogs.com/cxc1357/p/11973558.html
Copyright © 2011-2022 走看看