类和对象 const&内联&静态成员&友元

const修饰成员函数
成员函数后加const,const修饰this指针所指向的对象,保证调用这个const成员函数的对象在函数内不会被改变
可读可写可以调用只读;只读不能调用可读可写
const在之前,修饰对象 const Date *p Date const p
const在之后,修饰指针变量本身 Date const p

  1. const对象不可以调用非const成员函数,可以调用const成员函数
  2. 非const对象可以调用非const成员函数和const成员函数
  3. const成员函数内可以调用其它的const成员函数,不可以调用非const成员函数
  4. 非const成员函数内可以调用其它的const成员函数和非const成员函数

inline(内联)
以inline修饰的函数叫做内联函数,提升程序运行效率

  1. 以空间换时间,省去调用函数的额外开销
  2. 对于编译器只是一个建议
  3. inline必须和函数定义放在一起,成为内联函数
  4. 定义在类内的成员函数默认定义为内联函数

尽量以const,enum(枚举),inline替换 #define
宏的优点:增强代码复用性,提高性能
宏的缺点:
1. 不方便调试(因为在预处理阶段进行了宏替换)
2. 导致代码可读性差,可维护性差,容易误用
3. 没有类型安全检查

友元:突破类封装的一个函数,友元函数允许在类外访问该类中的任何成员,友元函数用关键字friend说明

  1. 友元函数不是类的成员函数
  2. 友元函数可以通过对象访问所有成员

Date是Time的友元,所以Date可以访问Time的所有成员
注意:友元一定上破坏了c++的封装,不宜多用

类的静态成员:

  1. 类里边static修饰的成员称为静态类成员
  2. 类的静态成员为该类型的所有对象所共享

    静态成员函数直接突破类域就能调用;
    静态成员函数只能访问静态成员变量,因为没有this指针

问题:
静态成员函数不可以访问非静态成员函数
非静态成员函数可以访问静态成员

猜你喜欢

转载自blog.csdn.net/zhangjie1315/article/details/81219141