const的用法小结

来源:互联网 发布:显微镜图像分析软件 编辑:程序博客网 时间:2024/05/20 03:38


C++语言中,const类型限定符用于限定某标识符在定义域范围内为常量,所限定的常量、函数参数等成为只读的,不能被修改。

在C语言编程序时,通常用宏来定义常量,如
 #define MaxSize 100;
用C++语言编程序时,通常用const来定义常量,如
 const int maxSize = 100;

const的用途主要有以下四点:

1: 当const类型说明符用于说明变量时,其作用是冻结所定义的变量在定义域范围内为常量。C++要求用const说明的变量必须在定义时初始化赋值,以后不允许再有赋值操作。

   A: const说明的常量和同类型的变量具有单向兼容性。即,const说明的常量可赋给变量,但反之则不允许。如:
   void main(void)
   {
          int x = 4;  // 定义为变量
   const int y = 5;  // 定义为常量
?
   x = y;   // 给变量x赋值合法
   //y = x;  // 给常量y赋值出错
  }
 
  B: const说明的形参可被同类型的非const实参初始化。
 #include <iostream.h>
 void F1(const int x)
 {
  cout << x << endl;
  }
 void F2( int x)
 {
  cout << x << endl;
  }
  void main(void)
  {     
           const int  y = 20;
           int x = 5;
        F1(x);  // 合法
  F2(y);  // 亦合法
   }

2: 当const类型说明符用于说明指针类型变量时,有三种情况:
 
   A: 冻结所定义的指针变量所指向的数据. 如:const int *p1 = &x;      // 定义指针所指向的量为常量,
          p1 = &y;   // 修改指针地址操作合法 
          *p1 = 4;   // 修改指针地址内的值操作非法

   B:  冻结指针的地址值    如:int * const p2 = &x;         // 定义指针自身为常量
          p2 = &y;   // 修改指针地址操作非法
               *p2 = 3;   // 修改指针地址内的值操作合法


   C:  冻结指针变量所指向的数据和指针的地址值。如:const int * const p3 = &x;  // 指针所指向的量和指针自身为常量
          p3 = &y;   //修改指针地址操作非法
                *p3 = 3;   // 修改指针地址内的值操作非法
3:当const类型说明符用于函数的形式参数时,其作用是冻结实际参数在该函数内为常量,即该参数不允许在函数内被修改。形参可以是const
int x或const int &rx。

4:当const类型说明符用于类的成员函数时,其作用是不允许该成员函数修改对象的数据成员。


常量必须在定义时就初始化

 

 

原创粉丝点击