C++ static
本文主要记录的C++中static的一些内容,内容简单,仅仅作为梳理一下知识,如有错误请留言指出。
static的作用
- 在函数体,一个被声明为static的变量,在这一函数被调用的过程里,其数值维持不变。
- 在模块内(但在函数体外),一个被声明的静态变量可以被模块内的所有函数访问,但是不能被模块外的函数访问,是一个本地的全局变量
- 在模块内,一个被声明为静态的函数只可能被这一模块内的其他函数调用,也就是这个函数被限制在声明它的模块内使用。
总的来说,static控制了变量和函数的使用范围(本地数据化和代码范围的控制)
static全局变量和普通全局变量的区别
全局变量和静态全局变量都是静态存储方式。区别在于:非静态全局变量的作用域是整个源程序,当一个源程序有多个源文件组成时,非静态的全局变量在各个源文件都有效,而静态全局变量则限制了作用域,只定义了该静态全局变量的源文件有效,同一源程序的其他源文件不能使用它,使用静态全局变量可以避免在其他源文件中引起错误。
综上:把局部变量改成静态变量改变了它的存储方式,及改变了它的生存期,把全局变量改为静态变量,改变了它的作用域,限制了它的使用范围。
- static全局变量与普通全局变量的区别:static全局变量只初始化一次,防止在其他文件单元中被引用
- static局部变量与普通变量的区别:static全局变量只初始化一次,下一次依据上一次结果值。
- static函数与普通函数的区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份复制品
C++类的静态数据和方法成员
类中的静态成员和方法不属于类的实例,而属于类本身并在所有类的实例间共享。调用这些时,应用类名::来引用。
#include <iostream>
using namespace std;
class Widget
{
public:
Widget()
{
++count;
}
~Widget()
{
--count;
}
static int num()//静态成员函数
{
return count;
}
private:
static int count;//静态私有数据成员
}; int Widget::count = ;// int main()
{
Widget x,y;
cout<<"The num is:"<<Widget::num()<<endl;
if(Widget::num()>)
{
Widget x,y,z;
cout<<"The num is:"<<Widget::num()<<endl;
}
Widget z;
cout<<"The num is:"<<Widget::num()<<endl;
cout << "Hello World!" << endl;
return ;
}
C++ static的更多相关文章
- static,你还敢用吗?(二)
为了压系统,昨天小组在测试环境模拟了一大批订单数据.今天上午查看记录的账单计息日志,发现了一大堆的MySqlException MySql.Data.MySqlClient.MySqlExceptio ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- const extern static 终极指南
const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...
- PHP static静态属性和静态方法
这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内 ...
- static,你还敢用吗?
我用火狐的HttpRequester测试开发组里一个同学发布的Web API接口,遇到了一个奇怪的问题. 我测试边界情况时,第一次调用响应的结果是正常的,但当再次及以后的请求时,却返回了异常“Syst ...
- Java关键字:static
通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...
- Android 中关于static的使用问题
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5251564.html 项目中,在不停地接收串口数据很长一段时间(几小时)后,会偶然性的报错.初步排除了oom ...
- iOS: 在UIViewController 中添加Static UITableView
如果你直接在 UIViewController 中加入一个 UITableView 并将其 Content 属性设置为 Static Cells,此时 Xcode 会报错: Static table ...
- 浅谈Static关键字
1.使用static关键字声明的属性为全局属性 未使用static关键字指定city之前,如果需要将Tom,Jack,Mary三人的城市均改成Beijing,需要再次声明三次对象的city为Beiji ...
- 今天思考一个问题,PHP const和static的区别
static关键字在类中是,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例,其他类是无法访问的,只对类的实例共享,能一定程序对该成员尽心 ...
随机推荐
- 关于公司VPN专线接入的一个案例
最近互通网络技术部门收到一到封邮件,是关于公司VPN接入的问题,问题如下: 条件:A区为办公地点1,其他办公电脑20台,并通过写字楼的宽带接口联通外网. B区为新办公地点2,预设应用.数据库.备份服务 ...
- phpStudy 的Apache虚拟主机配置
放弃了wamp,朋友介绍了phpstudy,不错的一款软件,关键是能自由切换php版本.相关的阿帕奇虚拟主机配置参考:http://www.th7.cn/system/win/201506/10846 ...
- MVC路由配置
目录 URL Routing 的定义方式 示例准备 给片段变量定义默认值 定义静态片段 自定义片段变量 自定义片段变量的定义和取值 将自定义片段变量作为Action方法的参数 指定自定义片段变量为可选 ...
- UI Automation Test
UI Automation test is based on the windows API. U can find the UI Automation MSDN file from http://m ...
- 浅谈struts2之chain
转自:http://blog.csdn.net/randomnet/article/details/8656759 前一段时间,有关chain的机制着实困绕了许久.尽管网上有许多关于chain的解说, ...
- java TreeMap用法
转自:http://huchenqiang90.blog.163.com/blog/static/11250080020101025956498/ 最近工作遇到需要按一个model中不同的列进行排序的 ...
- 小试牛刀--利用豆瓣API爬取豆瓣电影top250
最近得赶进度爬点东西,对于豆瓣,它为开发者提供了API,目前是v2版本,目前key不对个人开放,但是可以正常通过其提供的API获取数据.豆瓣V2版API权限分3类:公开.高级.商务,我们用开放基本数据 ...
- IE8控件安装方法
打开上传页面,IE提示安装控件,点击安装 刷新网页,点击允许运行加载项,需要允许两次
- if else 的令人防不胜防的奇葩错误
if(a==t && b+c >a) else flag=false; 这个语句乍一看没什么问题,如果a==t 成立b+c >a不成立-〉flag=false; 但是编译 ...
- Ubuntu下使用USB串口
Ubuntu本身一般都带了USB转串口的驱动. 1. 首先确认系统支持USBSerial,输入以下命令: lsmod | grep usbserial 2. 接上USB串口线,看看系统是否可 ...