静态成员(6)
静态成员就是在成员变量和成员函数之前加上关键字static,称为静态成员
静态成员分为:
1.静态成员变量
(1)所有的对象共享同一份数据(决定了什么时候用static关键字)
(2)在编译阶段分配内存
(3)类内声明,类外初始化(必须要做)
2.静态成员函数
(1)所有的对象共享同一个函数,因为它不属于某个对象,而属于类(Person::func())
(2)静态成员函数只能访问静态成员变量(无法访问非静态成员变量)
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 //静态成员函数 6 //所有对象共享同一个函数 7 //静态成员函函数只能访问静态成员变量 8 9 class Person 10 { 11 public: 12 13 //静态成员函数 14 static void func1(void) 15 { 16 m_A = 100;//静态成员函数 可以访问 静态成员变量 17 //m_B = 200;//静态成员函数 不可以访问 非静态成员变量 属于非法操作,系统会报错 18 cout << "静态成员函数1的调用" << endl; 19 } 20 21 22 static int m_A;//静态成员变量 类内声明 23 int m_B;//非静态成员变量 24 25 26 //静态成员函数也是有访问权限的 27 private: 28 static void func2(void) 29 { 30 m_A = 100;//静态成员函数 可以访问 静态成员变量 31 //m_B = 200;//静态成员函数 不可以访问 非静态成员变量 属于非法操作,系统会报错 32 cout << "静态成员函数2的调用" << endl; 33 } 34 35 }; 36 37 int Person::m_A = 0;//类外初始化 38 39 void test_01(void) 40 { 41 //静态成员函数访问有两种形式 42 //1.通过对象访问 43 Person p; 44 p.func1(); 45 46 //2.通过类名访问 47 //Person::func1(); 48 49 // 50 //Person::func2();//因为func2位于私有作用域,所以无法访问 51 } 52 53 int main(void) 54 { 55 test_01(); 56 57 system("pause"); 58 return 0; 59 }