您的位置:首页 > 编程语言 > C语言/C++

C,与C++的static的几大用法以及区别。

2008-11-21 12:34 453 查看
static在C,C++中都是关键字。但是两者的用法却有些不同;
总结起来可以分为:

一,面向过程static的用法:

1,静态全局变量。/静态函数;

1)C语言中的全局变量的作用域是整个程序;只要你在其他的文件中(如果要使用一个全局变量),用extern声明下就可以使用在其他文件中已经定义的全局变量!

这样导致的一个后果就是使得程序比较难以维护,而且命名的错误也显得更为隐蔽!
为了限制其在其他文件中的作用域。

往往就会使用静态全局变量。就是在全局变量前面加上static关键字。此时变量的数据分配的区域仍然是在全局区域内,但是他的作用域却只有在当前文件中,无论在其他文件是否声明了外部的变量!

2)静态函数;

跟静态全局变量类似,原先的全局函数具有的程序域可访问的性质也没有了!只能文件域内访问!
2,静态局部变量;

对于C或者是C++当中函数内部的变量,默认情况下都是分配在堆栈上面的临时局部变量。在函数调用结束以后变量就会被销毁掉。

为了能够在其他函数中共享,可以使用静态局部变量。

在变量前加上static。此时变量的作用域仍然是函数内部但是他的生命周期是全局的!

二,面向对象的static成员;

C++对static关键字做了重用,在类中赋予了新的含义。声明为static的成员其隶属于类。因为他是随着类的初始化加载的,而且只会加载一次!

静态成员函数不管是否是static, 在内存中只有一个副本, 普通成员函数调用时, 需要传入this指针, static成员函数调用时, 没有this指针;

因此在定义的时候应该要注意。在实现静态static函数的时候在CPP中就不用声明了跟virtual的类似!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: