C++ 静态成员 初步学习

本文从WordPress迁移而来, 查看全部WordPress迁移文章

参考学习

一个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//记住一点
//静态数据成员,成员函数都是属于类的,而不是属于某个具体的对象
#include <iostream>
#include <cstdio>
using namespace std;

class STU{
private:
int id,x;
static int tot; //只是声明,tot用于记录一共创建了多少个STU对象
public:
STU(int ii,int xx):id(ii),x(xx){}
~STU(){}
void set(int __id,int __x){
id = __id; x = __x;
}
void show(){
cout << id << endl;
cout << x << endl;
cout << tot << endl;
cout << endl;
}
static void set_x(int xx,STU &stu){
//错误,因为静态函数是没有this指针的,并指导是要对那个x操作
//x = xx;
stu.x = xx; //只能通过一个具体的对象来赋值,尽管x是private变量
}
static void set_tot(){
tot++;
//虽然静态函数是没有this指针
//但是tot本身是个静态变量,是共有的,也不需要指定某个对象
}
static void show_tot(){
cout << tot << endl;
cout << endl;
}
};
//静态数据成员需要在main之前就定义(初始化)
int STU::tot = 0; //类外定义静态成员

int main(){
STU stu1(26,1),stu2(27,2),stu3(28,3);
stu1.set_tot();
stu2.set_tot();
stu3.set_tot();

//静态成员函数通过 类名 或 对象调用
STU::show_tot(); //正确
stu1.show_tot(); //同样正确

stu1.show();
stu2.show();
stu3.show();
//stu1.set(0726);
return 0;
}