1. 静态成员
1.1 静态成员变量
1.1.1 在成员变量前 +static
1.1.2 共享同一分数据
1.1.3 在编译阶段分配内存
1.1.4 类内声明、类外初始化
1.1.5 访问方式俩种:通过类名、对象访问
1.1.6 静态成员变量也是有访问权限
1.2 静态成员函数
1.2.1 在成员函数前+static
1.2.2 数据也只有一份
1.2.3 访问方式:通过对象、通过类名
1.2.4 静态成员函数只能访问静态成员变量,不能放问非静态成员变量
1.2.5 静态成员函数也是有访问权限的
2.单例模式 ——主席类
2.1 一个类中只有唯一的一个实例对象
2.2 私有化
2.2.1 默认构造函数
2.2.2 拷贝构造函数
2.2.3 唯一指向主席的指针 变成只读状态
2.3 对外提供公共接口 public中
2.3.1 static Chairman *getInstacne()
3.单例模式——打印机案例
3.1 实现单例模式
3.2 public中设置提供对外打印功能,并且统计打印次数
4.C++对象模式初探
4.1 成员变量和成员函数分开存储
4.2 一个类中:只有非静态成员变量属于类中大型,其他都不计算在类的内部
4.3 空类的大小为:1 字节
5.this 指针
5.1 this 指针指向被调用的成员函数所属的对象
5.2 *this 含义是对象的本体
5.3 this可以解决名称冲突问题
5.4 链式编程
5.4.1 形如:p1.addage(p2).addage(p2).addage(p2);
5.4.2 编程思想是:无限的叠加
6.空指针访问成员函数
6.1 如果是一个空指针可以访问没有this的一些成员函数
6.2 如果函数中用到this指针,程序就会跑丢,因而为了让代码更加严谨应该加一个判断if(this==NULL)
7. 常函数和常对象
7.1 this 指针本质是 指针常量 type*const this
7.1.1 指针的指向是不可修改的,指针指向的值可以修改
7.1.2 如果想让指针指向的值也不能修改,应写为:const type *const this
7.1.3 需要将成员函数改成常函数,应该写为:成员函数+const
7.2 有些特例的属性即使是常函数或者常对象也是可以修改的,只需在这个需要修改的属性前加关键字 mutable
7.3 常对象:const Person
7.4 常对象只能调用常函数,不可以调用普通的成员函数
8.友元
8.1 全局函数作为友元函数
8.1.1 可以选择一个或多个全局函数作为本类的友元函数,可以访问到私有内容
8.1.2 类内部写入格式为:friend + 函数声明
8.2 类作为友元类
8.2.1 告诉编译器 A类是本类B的好朋友,A类可以访问B类里面私有内容
8.2.2 格式:在本类B内部写入形如 friend class A
8.3 成员函数可作为友元函数
8.3.1 告诉编译器 A类中成员函数visit()可以访问本类B中的私有内容
8.3.2 格式: 在本类B内部写入形如 friend void A::visit();