普通成员函数不可以访问静态成员
静态成员函数只能访问静态成员变量不能访问非静态成员变量
可以通过类的作用域访问静态成员函数
可以通过对象访问静态成员函数
静态函数之间、非静态函数与非静态函数之间可以访问。
但静态成员函数不可以调用非静态成员函数。
访问静态成员的一般格式为:
类名::静态成员名
对象名.静态成员名
对象指针->静态成员名
代码:
#include <iostream> using namespace std; class Person { public: int a; //静态成员变量不能在类初始化赋值,类内只能声明,定义在全局 声明的作用只是限制静态成员变量作用域 static int b;//静态成员变量 在编译阶段就分配内存 存在静态全局区 void show() { cout << a << " " << b << endl; } static void static_show()//静态成员函数 可以访问静态成员变量 不能访问内非静态成员变量 { //cout << a << " " << b << endl; 在静态函数里 a不是静态变量访问不了 cout << " " << b << endl; } private: }; int Person::b = 100; void test01() { Person::static_show();//通过类的作用域访问静态成员函数 Person p1; p1.static_show();//通过对象访问类的静态成员函数 } int main() { test01(); //cout << b << endl;//不可以访问 cout << Person::b << endl;//通过类::静态变量 可以访问 return 0; }
运行结果: