研究这个世界离不开物质,研究程序离不开内存
全篇的主线——内存的组织
设计的是软件,不再是一个算法或一个功能函数。
(而非面向过程)面向对象设计:抽象、封装、继承、多态
一个对象的成员主要包括两种
状态:数据、变量、属性
行为:方法、函数、操作
结构
模块 类 自定义类型
访问接口 对象 变量
类(对象的抽象)
private 仅仅允许本类成员函数访问
public 暴露成员,一般暴露函数作为操作private成员的外部接口
protected 类似于private,但区别是继承后在派生类
对象
类名 对象名.公有成员
对象初始化:构造函数
对象清理:析构函数(与类同名、无返回值、一定是公有)
常数据成员(const)初始化,只能通过初始化列表
派生-继承(UML类图描述)
父类与子类之间的
类1--派生(子类化)-->类2
|(实例化)
成员、静态
类A继承类B(类B派生类A)
class A:public B
{}
override 同名覆盖 基类成员
overload 同名不同参 重载
构造函数->派生类名::派生类名(基类所需形参,本类成员形参):
基类1(基类参数列表1),…(){}
派生类->基类(转换):基类A;派生B;A=B;//A即得到B中基类部分,称之为“对象截断”
类之间的
多继承的代替方法
类的组合,类内嵌其他类的对象
构造:初始化列表 类名::(形参):内嵌对象名(形参),…(){}
类的作用域
类的作用域 (this)
类内函数对本类其他成员有无限制的访问权(修改还需要写在函数里)
static 静态成员,类内所有对象共同维护(变量、函数,无需对象的“前缀”,需要类名+作用域限定符)
将外部(类、类函数、非类函数)声明为本类友元。
编译
带有默认参数的inline 内联成员
(类)对象{成员函数、数据成员(变量、引用、指针)}
灵活可复用:继承·多态性(联编(绑定))
动态联编(运行多态(表现形式为虚函数))
静态联编(重载多态、模板多态)
多文件 作用域·生存周期
禁止修改 const
函数(同名重载(参数需要不同)、模板)-->结构化程序设计
{
基础数据类型 数组
表达式 符号
(使用控制语句连接在一起)
}
class(xxx.h、xxx.cpp) 声明、定义、实现、操作
extern
抽象类-用基类指针范文派生函数(避免继承后仍可以访问基类)虚函数-(无函数体)纯虚函数
基类-派生类-多继承(成员().基类的构造)
类的组合
类的构造·析构
类的静态成员
执行
执行实质上是(定位+顺序),一段复制,安排好的内存格式
自定义结构·指针·引用【内存结构安排·寻找】