静态成员变量不专属于某一个类对象,可以通过类或者类对象进行访问。
静态成员变量处于全局区。
静态成员函数也是相似的,可以通过类或者类对象进行访问。
静态成员函数只能访问静态变量,不能访问非静态变量。
如m_salary
非静态变量,则:
static void get_salary() { cout << "static func: " << m_salary << endl; }
会报错。
完整demo如下:
#include<iostream>
using namespace std;
class Person
{
public:
static int m_age;
int m_salary=10;
static void get_age() { cout <<"static func: "<< m_age << endl; }
//static void get_salary() { cout << "static func: " << m_salary << endl; }
};
int Person::m_age = 10;
int main()
{
Person p;
cout << "static var: " << p.m_age << endl;
cout << "static var: " << Person::m_age<< endl;
p.get_age() ;
Person::get_age();
return 0;
}
//static var: 10
//static var: 10
//static func: 10
//static func: 10