偷偷拿来记录一下萌新的cs路——day 25
静态成员变量特点:所有对象共享一份数据;编译阶段分配内存至全局区;类内声明,类外初始化。
访问方式:通过对象;通过类名(::)。
#includeusing namespace std; // 静态成员变量 class Person { public: // 所有对象共享一份数据 // 编译阶段分配内存至全局区 // 类内声明,类外初始化 static int m_A; }; int Person::m_A = 100; // 初始化Person作用域下的变量 // 通过对象访问静态成员变量 void test01() { Person p; cout << p.m_A << endl; Person p2; p2.m_A = 200; cout << p.m_A << endl; } // 通过类名访问 void test02() { cout << Person::m_A << endl; } int main() { test01(); test02(); return 0; }
运行结果
由于静态成员变量具有所有对象共享一份数据的特点,故p2.m_A被赋值为200后,输出p.m_A记过也为200。
静态成员函数特点:所有对象共享一个函数;只能访问静态成员变量。
访问方式:同静态成员变量。
#includeusing namespace std; // 静态成员变量 // 所有对象共享一份数据 // 编译阶段分配内存至全局区 // 类内声明,类外初始化 class Person { public: // 静态成员函数 // 所有对象共享一个函数 // 只能访问静态成员变量 static void personality() { cout << "personality调用" << endl; m_A = 300; // 不可访问m_B(非静态成员变量) } static int m_A; int m_B; }; int Person::m_A = 100; // 初始化Person作用域下的变量 // 通过对象访问静态成员变量 void test01() { Person p; p.personality(); } // 通过类名访问 void test02() { Person::personality(); cout << Person::m_A << endl; } int main() { test01(); test02(); return 0; }
运行结果:
在静态成员函数中将m_A赋值为300后,m_A输出结果变为300。
以后学了更多知识还会回来更新的!有误之处恳请大佬指正,提前感谢!



