函数内部定义的static变量,事实上是全局变量。 而这个全部变量却无法在函数外直接读取,除非函数返回它的引用。
理解以上,就可以让函数内定义的静态变量可以实现类似私有成员变量的安全性。
1) 通常,保持一个变量的安全性的做法,是把这个变量变成某个类的私有成员变量,这样就只能通过类的方法来设置和获取。如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#include <iostream>
using namespace std;
class myVal
{
private:
int val;
public:
void setval(int n){
val = n;
}
int getval(){
return val;
}
};
int main(){
myVal obj;
obj.setval(999);
cout<< obj.getval()<<endl;
obj.setval(666);
cout<< obj.getval()<<endl;
}
2) 如果改用函数内static变量,可以实现类似功能:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#include <iostream>
using namespace std;
int &getval(){
static int val;
return val;
}
void setval(int n){
getval()=n;
}
int main(){
setval(999);
cout<< getval()<<endl;
setval(666);
cout<< getval()<<endl;
}