静态成员(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 }

 

posted @ 2020-04-14 14:11  坦率  阅读(156)  评论(0编辑  收藏  举报