C++中的静态成员函数
- | 静态成员函数 | 普通成员函数 |
---|---|---|
所有对象共享 | 是 | 是 |
隐含this指针 | 否 | 是 |
访问普通成员变量 | 否 | 是 |
访问静态成员变量 | 是 | 是 |
通过类名直接调用 | 是 | 否 |
通过对象名直接调用 | 是 | 是 |
静态成员函数总结:
静态成员函数是类中的特殊的成员函数
静态成员函数没有隐藏的this指针:当调用一个对象的非静态成员函数时,系统会将该对象的起始地址赋值给成员函数的this指针.但是,静态成员函数不属于某个对象,为该类的所有对象共享,所以静态成员函数没有this指针.
静态成员函数可以通过类名直接访问
静态成员函数可以通过对象访问
静态成员函数只能直接访问静态成员变量(函数),而不能直接访问普通成员变量(函数)
使用静态成员函数的原因:
静态成员函数主要是为了处理静态成员变量。
静态成员变量:
类的静态成员变量属于类的成员而不是对象,供所有对象共享,存放于全局区,因而不计入类的内存计算。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员变量可以通过类直接访问。
静态成员变量的初始化
静态成员不属于类的任何对象,所以并不是对象建立时被定义的,所以它不能由类的构造函数初始化,一般也不能在类内初始化。
关键字static只出现类的内部。
在类外定义且初始化
常量静态成员可以在类内初始化
静态成员变量的访问
使用类作用域运算符直接访问
使用类的对象访问
成员函数可以直接访问
————————————————