读书笔记《cpp类与数据结构》
比大话数据结构更适合数据结构的入门
什么是类
结构体和类
结构体
和数组最大的区别就是数据成员可以拥有不同的类型,结构体一个是可以储存信息记录,另一个就是用来为数据结构本身创造构建块。数组不能赋值给数组但是结构体的对象可以复制给同一结构体的另一个对象
类
一个类生成很多个对象(私有:数据成员、公用:函数成员)
封装encapsulation:对象内部的数据只能由对象本身访问
类接口class interface:对象的共用部分当做程序和对象数据之间的接口
类接口好处:修改量减少
类的实现implementation
类包含两个文件:说明文件和实现文件
说明文件
名称:“类名.h”
class 类名{public:……private:……};
实现文件
名称:“类名.cpp”
#inlude “类名.h”
void 类名::函数名(){};
……
两点:
从对象的函数返回的时,对象将保留它的数据成员的当前值
类的所有函数都可以使用类定义中声明的数据成员。主程序不能使用私有数据成员。
要记得测试类
为每个类编写测试驱动程序
注:把函数定义放到类中
结构和类的区别:结构不指明的话默认为公用,类则默认为私有
重载运算符和类模板
函数的名称必须使用关键字operator,后面跟被重载运算符的符号
当左操作数是结构的一个对象的时候,就会为这个对象调用该函数
一般不用==测试两个结构体是否相等
当左操作数不是对象,右操作数是对象时,最好将函数定义直接放在结构体定义的下方,但是与结构体中函数定义两点不同
一、这个函数定义不属于对象二、不认为结构体拥有该函数(访问方式)
当左操作数为类的对象,函数原型位于类定义的公用部分;当左操作数不是而右操作数是类的对象,函数原型位于类定义的下面
类模板:生成类的蓝图
template
const限定符和构造函数
使用const有多个方面的好处
参数传递方式概括:函数中的对象需要修改的时,用传址方式,对象的改变映射到调用函数中;用传值方式则不会映射到调用函数中;函数中的对象不需要改变就用传常址
构造函数通常用来初始化私有类的数据成员