const修饰成员函数
成员函数后加const,const修饰this指针所指向的对象,保证调用这个const成员函数的对象在函数内不会被改变
可读可写可以调用只读;只读不能调用可读可写
const在之前,修饰对象 const Date *p Date const p
const在之后,修饰指针变量本身 Date const p
- const对象不可以调用非const成员函数,可以调用const成员函数
- 非const对象可以调用非const成员函数和const成员函数
- const成员函数内可以调用其它的const成员函数,不可以调用非const成员函数
- 非const成员函数内可以调用其它的const成员函数和非const成员函数
inline(内联)
以inline修饰的函数叫做内联函数,提升程序运行效率
- 以空间换时间,省去调用函数的额外开销
- 对于编译器只是一个建议
- inline必须和函数定义放在一起,成为内联函数
- 定义在类内的成员函数默认定义为内联函数
尽量以const,enum(枚举),inline替换 #define
宏的优点:增强代码复用性,提高性能
宏的缺点:
1. 不方便调试(因为在预处理阶段进行了宏替换)
2. 导致代码可读性差,可维护性差,容易误用
3. 没有类型安全检查
友元:突破类封装的一个函数,友元函数允许在类外访问该类中的任何成员,友元函数用关键字friend说明
- 友元函数不是类的成员函数
- 友元函数可以通过对象访问所有成员
Date是Time的友元,所以Date可以访问Time的所有成员
注意:友元一定上破坏了c++的封装,不宜多用
类的静态成员:
- 类里边static修饰的成员称为静态类成员
类的静态成员为该类型的所有对象所共享
静态成员函数直接突破类域就能调用;
静态成员函数只能访问静态成员变量,因为没有this指针
问题:
静态成员函数不可以访问非静态成员函数
非静态成员函数可以访问静态成员