static、const、define、inline关键字
来源:互联网 发布:eclipse java neon 编辑:程序博客网 时间:2024/05/06 09:15
1、staic关键字
凡是用static关键字声明或者定义的变量和函数,均存储在静态存储区,其生存期都是伴随着程序结束而结束。
静态局部变量: 与普通局部变量相比,作用域一样,存储区域不一样(由堆栈变为静态存储区),生存期不一样。
静态全局变量: 与一般全局变量相比,存储区一样,生存期一样,作用域变小了(由整个程序到包含其的cpp文件)。
静态 函数: 与一般全局变量相比,存储区一样,生存期一样,作用域变小了(由整个工程到包含其的cpp文件)。
类的静态成员变量:它为类的所有对象所共有,在没有产生类对象时其作用域就可见,在没有产生类的实例时,我们就可以操作它;静态数据成员定义时要分配空间,所以不能在类声明中定义。
类的静态成员函数:它为类的全部服务而不是为某一个类的具体对象服务,静态成员函数由于不是与任何的对象相联系,因此它不具有this指针,不能够访问类的非静态成员。
2、const关键字
作用:定义常量,修饰函数的参数和返回值
3、define关键字
c语言中的宏定义,在编译时只是进行简单的文本替换,而不进行数据类型安全检查
4、inline关键字
好处:避免函数的调用,而是直接将函数代码copy到调用的地方
坏处:增加代码的体积,增加内存负荷,影响程序运行速度
一般将需要多次调用并且代码只有10行以内的函数定义为inline函数。
5、register变量
将(频繁使用的)局部变量的值从内存中放到寄存器(静态局部变量不能定义为register变量)
6、extern变量(与static正好相反,它的作用域为整个工程)
extern int i; i = 0;在全局区域时表示定义一个变量,在局部时表示引进外部变量,并给其赋值(赋值语句不应该出现在函数块之外)
extern用于定义一个变量:extern int i = 0;
7、一个类的例子
class Test{public:Test(): a(0){} enum {size1=100, size2 = 200 };private:const int a; // 只能在构造函数初始化列表中初始化,不能在构造函数体里面进行初始化 static int b;const static int c = 0; //可以在这里定义};int Test::b = 0; // 不能以成员列表初始化,不能在定义处初始化,因为不属于某个对象,只能在外部初始化。//const int Test::c = 0; //注意:给静态成员常量赋值时,不在需要加static修饰。但const要加。
- static、const、define、inline关键字
- #define inline static const
- static 、const 、 define 、inline
- C/C++关键字static,const,inline,define,typedef
- [转]C/C++关键字static,const,inline,define,typedef
- C/C++关键字static,const,inline,define,typedef
- C/C++关键字static,const,inline,define,typedef
- C/C++关键字static,const,inline,define,typedef
- 【zz】C/C++关键字static,const,inline,define,typedef
- C/C++关键字static,const,inline,define,typedef
- C/C 关键字static,const,inline,define,typedef
- C/C++关键字static,const,inline,define,typedef
- C/C++关键字static,const,inline,define,typedef
- c/c++关键字static,const,inline,define,typedef
- C/C++关键字static,const,inline,define,typedef
- static const inline #define enum
- const 、static、define 、inline、votatile
- static,const,inline,define的产生背景
- MVC学习十:MVC2中自定义校验
- 月光里的牧场-新华一缕
- android imageview 选择本地图片
- Beanstalk 源码分析----涉及到的结构体
- Android 发布版本不输出Log
- static、const、define、inline关键字
- Ajax同步的调用场景——使用同步Ajax在 onunload 事件时通知服务器
- Android 动态设置控件高度
- 交行供应商考评系统项目开发的经验实录
- 杭电2175
- 完全用linux工作
- Extjs系列学习资料
- POJ 1170 解题报告
- android AsyncTask类的使用