第10章 对象和类
10.1过程性编程和面向对象编程
过程性编程首先考虑遵循的步骤,然后考虑如何表示这些数据。
面向对象编程(OOP)首先考虑数据(表示与使用)
OOP方法 从用户角度考虑对象。描述对象所需的数据及用户与数据交互的操作。
10.2 抽象和类
10.2.1 类型是什么
指定基本类型完成3项工作:
1. 内存数量
2. 决定如何解释内存的位
3. 决定可使用数据对象执行的操作或方法
10.2.2 C++中的类
类是一种将抽象转化成用户数据类型的C++工具。
它将数据表示和操纵数据的方法合成一个简洁的包。
首先考虑如何表示类,
然后定义类(类声明(数据及接口)和类方法定义(类成员函数的实现))。
10.2.3 实现类成员函数
成员函数定义与常规函数定义非常相似。
但是有两个特征。
1. 定义成员函数时,使用作用域解析(::)来标记函数所属的类。
2. 类方法可以访问类的private成员。
10.2.4 使用类
可使用多文件程序的方法。
10.2.5 修改实现
保持接口不变。
10.3 类的构造和析构函数
C++提供构造函数用于构造新对象,
析构函数用于清理对象。
10.3.1 声明和定义构造函数
构造函数名称与类名相同。
10.3.2 使用构造函数
显式(使用函数名)、 隐式(使用{})
构造函数无法使用对象调用(因为使用构造函数前还没有对象)
10.3.3 默认构造函数(无参数的构造函数)
不提供构造函数,编译器会自动生成默认构造函数。
但是通常需要自己提供构造函数。
自己定义默认构造函数有两种(提供默认参数)、(无参数)
10.3.4 析构函数
在类名前加~
(初级阶段不需要管它。)
10.3.5 改造Stock类
10.3.6 构造函数和析构函数小结
10.4 this指针
涉及两个对象的方法需要this指针。
this指针是指向用来调用成员函数的对象(this作为隐藏参数传递给方法)
10.5 对象数组
声明方法与标准数组相同。
10.6 类作用域
在类中定义的名称的作用域为整个类。
10.6.1 作用域为类的常量
类中声明枚举。
或者使用static。
10.6.2作用域内枚举(c++11)
C++提供了新的枚举,枚举类
enum class egg{Small,Medium,Large,Jumbo}
10.7 抽象数据类型(ADT,abstract data type)
以通用方式描述数据类型(不依据特定的类型)