static成员(被static修饰的成员变量/函数)
可以通过三个方式访问:
1. 对象.静态成员
2. 对象指针->静态成员
3. 类名::静态成员
#include <iostream> class Student { public: static int m_age; static void study(); }; int Student::m_age = 10; //必须在类外初始化 void Student::study() { std::cout << "Study..." << std::endl; } int main(void) { Student::study(); return 0; }
一般static成员函数常用来类名访问。静态成员变量必须在类外初始化,另外静态成员函数在声明和定义分离时,实现部分不用再加上static
静态成员函数注意事项:
1. 内部不能使用this指针,这意味着,内部不能使用成员变量(非静态的)
2. 不能是虚函数
3. 非静态成员函数内部可以访问静态成员
4. 构造函数,析构函数不能是静态
内部不能使用this指针的原因是,不管对象存不存在,静态成员函数就已经存在了,而如果对象不存在的话,就根本没有this指针。