C++ 中 const 和 static 的作用

时间:2014-04-28 15:50:56   收藏:0   阅读:491

目录

const 的主要应用如下:

const 关键字使用的注意点:

C++中static关键字有三个明显的作用:

const的主要应用如下:

   const char * GetChar(void) {};
   char *ch =GetChar();//error
   const char *ch=GetChar();//correct
 int GetCount(void) const;

const 关键字使用的注意点:

例子:

mamicode.com,码迷
 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     const int x=1;
 6     int b=20;
 7     int c=10;
 8     int pto=100;
 9 
10     const int * p1=&b;
11     int * const p2=&c;
12     const int * const p3=&x;
13     const int * const p4=&b;
14     //*p1=21;   //error
15     p1=&pto;  
16     b=22;
17     
18     *p2=12;  
19     //p2=&b;    //error
20     c=11;
21 
22     //  *p3=3; 
23 
24     //  p3=&pto;
25     //  x=4;       //all error
26     return 0;
27 }
mamicode.com,码迷

C++中static关键字有三个明显的作用:

static 全局变量与普通全局变量有什么区别?

全局变量本身就是静态存储变量,静态全局变量当然也是静态存储变量。这两个在存储方式上并无不同。

但是 非静态全局变量的作用域是整个源程序,当源程序有多个源文件组成时,非静态全局变量在各个源文件中都是有效的。而静态全局变量的作用域只是在定义该变量的源文件中有效,其他源文件不能使用。

 

static局部变量与普通局部变量有什么区别?

把局部变量改变成static局部变量后是改变了它的存储方式,即改变它的生存期。

 

static函数与普通函数有什么区别?

作用域不同,static作用域只限于本文件,只在当前源文件中使用的函数应该说明为内部函数,内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。

举例:

mamicode.com,码迷
#include<iostream>

using namespace std;
class widget
{
    public:
        widget()
        {
            count++;
        }
        ~widget()
        {
            --count;
        }

        static int num()
        {
            return count;
        }
    private:
        static int count;
};

int widget::count =0;

int main()
{
    widget x,y;
    cout<<"The Num is "<<widget::num()<<endl;
    if(widget::num()>1)
    {
        widget x,y,z;
        cout<<"The Num is "<<widget::num()<<endl;

    }
    widget z;
    cout<<"The Num is "<<widget::num()<<endl;
    return 0;
}
mamicode.com,码迷

输出:

The Num is 2
The Num is 5
The Num is 3

 

C++ 中 const 和 static 的作用,码迷,mamicode.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!