static函数
来源:互联网 发布:贝叶斯分类算法有哪些 编辑:程序博客网 时间:2024/06/06 14:12
static 函数
在C语言编程中,static的一个作用是信息屏蔽!
比方说,你自己定义了一个文件 -- 该文件中有一系列的函数以及变量的声明和定义!
你希望该文件中的一些函数和变量只能被该文件中的函数使用,那么,你可以在该函数、变量的前面加上static,代表他们只能被当前文件中的函数使用!
而在C++中,用static来作为信息屏蔽就显得没有必要了!因为,C++有了信息屏蔽的利器 -- class机制!
然后是C/C++通用的函数作用域的static型的变量!其目的,也是为了信息的屏蔽!
int fun() {
static int a = 1;
a++;
}
在第一次进入这个函数的时候,变量a被初始化为1!并接着自增1!
以后每次进入该函数,a就不会被再次初始化了,仅进行自增1的操作!
在static发明前,要达到同样的功能,则只能使用全局变量:
int a = 1;
int fun() {
a++;
}
那么,a的值就有可能被其他函数所改变!
最后,说说类中的static变量和函数。
这种存储属性的变量和函数是同一种类的不同实例之间通信的桥梁!
#include <iostream>
using namespace std;
class A {
public:
static int num; // 统计创建了多少个实例
A () {num++}; // 每创建一个实例,就让num自增1
// 返回通过构造函数所创建过的A类实例的数目
static int how_many_instance() {
return num;
}
}
static A::num = 0; // 需要在类申明的外部单独初始化!
int main() {
cout << A::how_many_instance() << endl;
A a, b, c, d;
cout << A::how_many_instance() << endl;
system("pause");
}
一般,在类内部,是通过static属性的函数,访问static属性的变量!
补充一点,在类中,static型的成员函数,由于是类所拥有的,而不是具体对象所有的,这一点对于windows的回调机制非常有用。
因为对于回调函数而言,windows不会借助任何对象去调用它,也就不会传递this指针,那么对于一般成员函数作为回调函数的后果,就是堆栈中有一个随机的变量会成为this指针,这当然会引发程序的崩溃。
而static函数,由于是整个类的,屏蔽了this指针。因此,如果成员函数作为回调函数,就应该用static去修饰它。
- static变量; static函数
- static变量 static函数
- static 函数
- static函数
- static函数
- 函数,static
- static 函数
- static函数
- static函数(&)
- static修饰符:static变量,static函数
- Static 变量和Static函数
- static变量和static函数
- static 变量和static 函数
- C++ static变量 static函数
- static变量与static函数
- static变量、static函数、变量
- static变量与static函数
- static函数、static代码块
- 传递闭包,离散
- Spring.NET学习笔记12——面向切面编程(基础篇) Level 300
- 开博心得
- as3炮弹飞行和碰撞算法
- 找零问题
- static函数
- 互联网上的数据挖掘
- 图像拼接
- WINDOWS键盘事件的挂钩监控原理及其应用技术
- IT工程师需要注意的10个问题哈~~
- Spring.NET学习笔记13——AOP的概念(基础篇) Level 200
- 求两矩阵之积
- 毕业5年决定你的命运
- 使用Topshelf创建Windows 服务