关于static 和 const

static和const 的概念老是搞不清楚。。下面就从网上摘录下部分区别:

  • 关于static

在c中,static 用于信息屏蔽,你希望该文件中的一些函数和变量只能被该文件中的函数使用,那么,你可以在该函数、变量的前面加上static,代表他们只能被当前文件中的函数使用!
在c++这种面向对象的语言中,上述功能就没有必要了。

-----------------------

C/C++通用的函数作用域的static型的变量!其目的,也是为了信息的屏蔽!

int fun() {
   static int a = 1;
   a++;
}

在第一次进入这个函数的时候,变量a被初始化为1!并接着自增1!

以后每次进入该函数,a就不会被再次初始化了,仅进行自增1的操作!作用同全局变量!!!

-----------------------

说说类中的static变量和函数。

class A {
public:
    static int num;    //    统计创建了多少个实例
    A () {num++};    //    每创建一个实例,就让num自增1

 

    //    返回通过构造函数所创建过的A类实例的数目
    static int how_many_instance() {
        return num;
    }
}

static A::num = 0;    //    需要在类申明的外部单独初始化!

int main() {
    cout << A::how_many_instance() << endl;
    A a, b, c, d;
    cout << A::how_many_instance() << endl;
    system("pause");
}

static函数是类所拥有的而非对象所拥有的,他屏蔽了this指针。这一点对于windows的回调机制非常有用。

调用static函数时只需要前面加上类作用域区分符就可以了, 调用普通成员函数就需要加上类对象实例指针。

 

  • 关于const

const表示只读,const是一个C语言的关键字,它限定一个变量不允许被改变。

注意const int *p=string;  其中*p是只读不可变的,而p是可变的。p++是正确的

--------

tips:  int *p=new int[len]  //dynamic array initialization 

转载于:https://www.cnblogs.com/ggppwx/archive/2010/06/19/1761071.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值