c++编程实用教程摘录(简明、查漏补缺)

c++ 概述

    void的用法:1.限定无参数,2.void*定义通用指针指向任意类型的数据
    c++内存空间有四个:代码区,全局变量与静态变量区,局部变量区,动态存储区----时刻不能忘
    malloc在分配的时候不进行初始化,因此需要显式调用构造函数,new分配的同时进行初始化,即使后面没有跟括号和初始化参数。
    内联函数的好处:利于结构化编程的同时避免函数调用开销
    函数重载根据参数类型和个数实现函数的匹配,如果完全一样就会不能够识别,产生二义性

类和对象

    面向对象和面向过程程序设计的区别:
    面向对象:对象    =   数据结构 + 算法
          程序    =   对象 + 对象 + 对象 。。。。
    面向过程:程序  =   数据结构 + 算法
    多态:静态多态:函数重载,动态多态:虚函数
    消息:包括 接受对象,消息名称,消息参数。
    this指针:用来区分是哪个对象的成员函数(因为所有对象的成员函数都是放一块的)
    对象成员的引用:如果是引用,或者对象名,用“.”,如果是指针,用“->”
    默认构造函数:无参,不做任何工作,相当于空函数,需要做初始化工作的构造函数需要自己定义,定义以后覆盖默认构造函数
    构造函数可重载,析构函数不能重载
    拷贝构造函数的用处:1.用对象初始化对象,2.对象作为函数实参,3. 对象作为返回值返回临时对象
    浅拷贝与深拷贝是针对分配了堆空间的对象而言的

    堆对象和对象数组:
    静态成员用类名和::来访问
    友元函数有两种:普通友元函数和友元成员函数,是可以操作本类成员的非本类函数
    友元类:一个类的所有成员函数都是另一个类的友元函数

继承与派生

    访问权限
    多重继承中调用不同基类相同成员时产生的二义性问题的解决办法:
    1.使用::
    2.使用加壳的办法(同名函数覆盖)
    多重继承中调用公共基类相同成员时产生的二义性问题的解决办法:使用虚基类(在派生过程中与派生类一起维护同一个内存拷贝)

多态性和虚函数

    虚函数表
    虚析构函数的意义:基类指针调用delete删除派生类对象

运算符重载

    两种方式:重载为成员函数,重载为友元
    常见的运算符重载:
    类型 operator++();//前缀
        类型 operator++(int);//后缀
        类型 operator[](形参表);
        类型 operator==();//还有>或<
        operator 类型名();//类型转换运算符重载

    friend ostream operator<<(istream& , classname&);
    friend istream operator>>(istream& , classname&);

流与类库

    格式控制
    随机访问
    文件操作
    

模板

    函数模板
    类模板
    派生和类模板的组合技术:从类模板派生类模板,从类模板派生非类模板,从非类模板派生类模板

异常和断言

    异常处理模式:终止模式,恢复模式
    异常规格说明:
    返回类型 函数名 (参数表) throw (类型列表);
    返回类型 函数名 (参数表) throw ();
    返回类型 函数名 (参数表) ;
    断言:
    
    前置条件断言,后置条件断言,前后不变断言;

    使用:
        #include <assert.h>
        void assert (int expression_r_r_r);

STL

    容器,迭代器,函数对象,通用算法
    容器:类模板
    迭代器:输入迭代器,输出迭代器,前向迭代器,双向迭代器,随机存取迭代器
    算法分类:查找,排序,数值计算,比较,集合,容器管理,统计,堆操作
    另一种分类:修正算法,非修正算法,排序算法,数值计算算法

类的设计原则

    单一职责原则:一个类制作一件事,且只有一个引起它变化的原因

    依赖倒置原则:与特定业务有关的依赖关系硬尽量依赖接口和抽象类,而非具体类,具体类只负责业务实现,修改具体类不影响依赖关系

    开放-封闭原则(OCP):一个模块在扩展性方面应该是开放的,而在可更改性方面应该是封闭的,因此在进行面向对象设计时,尽量考虑接口封装机制,抽象机制和多态技术。

    Liskov替换原则(LSP):子类应当可以替换父类,并出现在任何父类能够出现的地方。
    接口分离原则:把功能实现在接口中,而不是在类中,使用多个专门的接口比使用单一的总接口好。

设计模式:

    单例设计模式:一个类仅有一个实例,并提供一个访问它的全局访问点。
    适配器设计模式:将一个类的接口转换成客户希望的另外一个接口。
    组合设计模式:将对象组合成树形结构,以表示“部分-整体”层次结构。
    命令设计模式:将一个请求封装成为一个对象,从而使我们可以用不同的请求对客户进行参数化。(对命令进行封装,从而把发出命令的责任和执行命令的责任分割开,并委派给不同对象)
    策略设计模式:定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换。
    责任链(审批)设计模式:通过一条隐式的对象消息链传递处理请求,直到有个对象处理它为止。
    修饰设计模式:动态地给一个对象添加一些额外的职责,比生成子类更灵活。

面向对象

    对象,类,属性,方法,封装,继承,消息,结构与关联,多态
    面向对象模型:类对象模型(数据结构),动态模型(状态,出发状态转换的事件,对象行为),功能模型(即用例模型,外部执行者所理解的系统功能)
    面向对象开发过程:需求分析,特定领域类分析,动态交互建模
    面向对象设计过程:子系统划分,系统体系结构设计(典型架构:表示层,业务逻辑层,数据访问层),对象设计与优化(使用模式设计对象,接口规格说明,对象模型重构,对象模型优化),持久对象设计(存储机制:对象数据库,关系数据库,其他(普通文件,XML文件))

UML图

    用例图
    类图
    顺序图
    协作图
    状态图
    活动图
    组件图
    部署图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值