static关键字
来源:互联网 发布:流水账软件 编辑:程序博客网 时间:2024/05/21 22:38
一 概述:
*static在c++中主要有两种用法:面向过程中的static和面向对象中的static。
*前者主要针对变量和函数,后者主要针对在类中的作用。
二 面向过程中static:
(1)静态全局变量:
*在全局变量前面,加上关键字static,该变量就定义为静态全局变量。
*特点:
~在全局数据区分配内存;
~在声明它的整个文件可见,在文件之外不可见即不能被其他文件所用;~其他文件定义相同的变量名不会发生冲突。(优点)
(2)静态局部变量
*在局部变量前面,加上关键字static,该变量就定义为静态局部变量。*特点:
~在全局数据区分配内存;
~它始终驻留在全局数据区,除非程序结束。但是作用域是局部作用域,定义它的函数或者语句块结束时,作用域随之结束。
#include<iostream>using namespace std;void test(){static int a=10;cout<<++a<<endl;}int main(){/*多次调用一个具有local static成员的函数,只存在一份local static成员。*/test();//值为11test();//12test();//13//cout<<a<<endl;//错误,超出作用域。}
三 静态函数
(1)在函数返回类型前加上static,函数即被定义为静态函数。
(2)特点:
*只在定义的文件中可见,不被其他文件使用;
*其他文件可以定义相同名字的函数,不会发生冲突.(优点)三 类中的static
(1)static类成员:
*对于特定类类型的全体对象而言,访问一个全局对象有时是必要地。然而全局对象会破坏封装,所以类可以定义静态数据成员。static数据成员独立于该类的任意对象而存在:每个static数据成员是与类关联的对象,并不与该类的对象相关联。
*static成员函数没有this形参,可以直接访问所属类的static成员,但不能直接使用非static成员。(原因可能和编译、链接有关)
(2)使用类的static成员的优点:
1.static成员的名字是在类的作用域中,因而可以避免与其他类的成员或者全局对象名字冲突。2.可以实施封装。static成员可以是私有成员,而全局对象不可以。
3.static成员是与特定类关联的。
(3)定义static成员:
1.static数据成员:static数据成员可以声明为任何类型,必须在类定义体的外部定义(正好一次),不像普通数据成员,static数据成员不是通过类构造函数进行初始化,而是应该在定义时进行初始化。
static关键字只能用于类定义体内部的声明中,定义不能标示为static。
2.static成员函数:例如:static void test();
static成员函数:没有this指针;不能被声明为const;不能被声明为虚函数。
static成员不是任何对象的组成部分,将成员函数声明为const就是承诺不修改函数所属的对象,所以 static成员函数不能为const(const对传递的this指针加以限定不修改对象,而static无this指针)。
(4)使用类的static成员:
可以通过作用域操作符从类直接调用static成员,或者通过对象、引用或指向该类类型对象的指针间接调用。- static关键字
- static关键字
- 关键字STATIC
- 关键字STATIC
- static关键字
- static 关键字
- static关键字
- static关键字
- static关键字
- static关键字
- static 关键字
- Static 关键字
- static关键字
- Static关键字
- static关键字
- static关键字
- static关键字
- 关键字:static
- Google Code Jam 2012 Qualification Round. Problem D. Hall of Mirrors
- php XML文件解释类
- 在linux系统(suse和redhat)下,打开coredump的设置方法
- 开源网店程序magento目录结构完整版
- android 如何使用命令和代码设置heapsize
- static关键字
- 12306网站、抢票插件以及偶写的自动订票小程序
- 一个女中医写的女人保养秘笈
- 在DLL中使用DevExpress的问题
- inno setup介绍
- 隐藏其它应用程序托盘图标
- 类型转换
- 设计头文件
- unicode、utf-8、ansi的故事及其相互转换