static关键字的用法
来源:互联网 发布:金山快译怎么汉化软件 编辑:程序博客网 时间:2024/05/19 23:24
c语言中static关键字有两种用法
1、修饰局部变量
a)地址在全局区,
b)只有第一次进入函数时初始化;
c)生命期在离开main函数之后结束;
d)每次进入函数时不重新初始化,保留进入函数之前的数值。
2、修饰全局变量,避免文件间相同变量名冲突
a)普通全局变量可以跨文件用extern关键字来引用;
b)static全局变量不可以用extern关键字来跨文件调用;
c)加了static关键字修饰,不同源文件之间可以有同名的全局变量;
d)static全局变量的含义是本源文件专用,或者叫本文件私有变量;
c++中,除了以上两种用法,还可以用static关键字来修饰成员变量或成员函数,
被static修饰的成员变量具有以下性质,
1、独立于类的对象存在,其地址在全局区
2、访问该类型成员变量需在类外重新进行定义性声明
3、不影响类的大小
被static修饰的成员函数具有以下性质:
1、没有隐含的this指针,因而不能访问类内的普通成员变量
2、具有全局性质,独立类的对象存在,调用时可直接使用类名::函数名进行调用,也可由对象调用(不推荐)
3、只能调用静态成员函数或静态成员变量
下面是一个简单的例子:
#include<iostream>using namespace std;class CTest{public: CTest(); ~CTest(); void Display() const; static void Test();private: int m_nTest; const int m_Const; static int num; } ;int CTest::num = 100; //static成员变量必须在类外进行定义性声明 CTest::CTest():m_Const(10),m_nTest(20){} CTest::~CTest(){}void CTest::Display() const{ //m_nTest = 100; 错误,只读成员函数不能对类内部的成员变量进行修改 cout << m_nTest << endl;} void CTest::Test(){//staitc成员函数无this指针,具有全局性质// cout << "StaticFun:" << m_nTest << endl; 错误,静态成员函数不能访问普通成员变量 cout << num << endl; // 访问static成员变量 }int main(){ CTest t; t.Display(); //CTest::Display(); 错误,普通成员函数必须由对象调用 CTest::Test(); //独立于某个对象 return 0;}
0 0
- static关键字的用法
- static 关键字的用法
- Static关键字的用法
- 关键字static的用法
- static 关键字的用法
- static关键字的用法
- static关键字的用法
- static关键字的用法
- static 关键字的用法
- static关键字的用法
- static关键字的用法
- static关键字的用法
- static关键字的用法
- 关键字static的用法
- 关键字 static 的用法总结
- C++关键字static的用法
- c++ static关键字的用法
- 关键字static的小用法
- 80.NYOJ--STL--一种排序
- Android融云判断是否用户已经加入黑名单和加入&移除黑名单
- 蓝桥杯 - 算法训练 - 寻找数组中最大值 - Java
- C++ 右值引用
- 编写一个安全可靠的C++11类:引入移动语义
- static关键字的用法
- linux访问windows上的共享文件夹
- 解决使用MSBuild编译项目没有拷贝间接引用的dll问题
- JavaScript window.document的属性、方法和事件小结
- 时间复杂度和空间复杂度详解
- string::npos,一个很大的数
- 单例设计模式
- 分布式系统程序编写要点
- PAT-数字黑洞