码迷,mamicode.com
首页 > 其他好文 > 详细

第一章 02 谈谈static关键词

时间:2014-12-02 00:02:26      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   os   使用   

引文一下吧

http://blog.csdn.net/hackbuteer1/article/details/7487694

 

一、static在C语言中的含义

1、静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。    

2、静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。(限制了访问范围)

 

 

二、c++中的扩展

2.1 static修饰成员变量

如果一个变量是类的一部分,但却不是该类的各个对象的一部分,它就被成为是一个static静态成员。一个static成员只有唯一的一份副本,而不像常 规的非static成员那样在每个对象里各有一份副本。

静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据成员只分配一次内存,供所有对象共用。所以,静态数据成员的值对每个对象都是一样的,它的值可以更新;

理解如下:

在头文件中,声明一个类(本质上是声明了一种新的数据类型而已),并没有真正的分配你空间。仅仅是一种口头上的宣称,并没有付诸行动。

但是但是,如果在类的声明中,声明了static的成员变量,由于静态数据成员存储在全局数据区。静态数据成员定义时要分配空间,所以不能在类声明中定义,既然不能在类中定义,那只能是在类中声明,在类外定义了。例子如下:

 

class Myclass
{
    private:
            int i;
            int j;
            static int k;//在类中,仅仅是声明

   public:
         Myclass();
  
}

int Myclass::k = 100;//这里才是真正的定义,在全局数据区分配空间

 因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它;

2.2 static 修饰成员函数

同理,一个需要访问类成员,而不需要针对特定对象去调用的函数,也被称为一个static成员函 数。
类的静态成员函数只能访问类的静态成员(变量或函数)

祖宗的杀手锏!

bubuko.com,布布扣

 

 

bubuko.com,布布扣

 看看log4cplu的牛人作者是如何使用这个static修饰的成员函数的吧:

bubuko.com,布布扣

由于没有将类实例化,因此采取了类名::静态成员函数名(参数列表)的形式来使用静态成员函数。

 

第一章 02 谈谈static关键词

标签:des   style   blog   http   io   ar   color   os   使用   

原文地址:http://www.cnblogs.com/lopnor/p/4136222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!