const 使用方法

const 是C/C++ 中的关键字,因为使用方法繁多,总结如下:

 

一、const 限定变量

1.1 const 修饰普通变量

说明:const 在C 常用于限定变量值不可改变,这也是const 最常用法。

1: const int value = 1;  //value为1 且值不可变

2: int const value = 1;  //同上

3: const int* pi = &value; //指针pi 可变,*pi 不可变

4: *pi = 0                  //False

5: pi = &new_value        //True

6: int* const pi = &value; //指针pi 不可变,*pi 可变

7: pi = &value2            //False

8: extern const int i;      //合法

9: extern const int j = 10; //不合法,常量不可再被赋值 

 

#define 也可以用于定义常量,和const 不同在于:系统对#define 定义的常量每遇到一次都分配一次内存,对const 定义的常量只分配一次内存,extern const 可用于应用其他文件变量,且并被改变。需要注意的是下面程序是正确的,虽然变量i 定义为const 类型,但通过指针可以改变i 的值。

1: const int i = 0;

2: int *pi = &i;

3: *pi = 1;

 

1.2 const 修饰函数参数

说明:const 用于函数传入参数前可以起到限定检查的作用,该参数在该函数内不得被修改:

   1: void function(const int val) //val为在函数中不被修改

   2: void function(const int* pv) //指针pv 指向的内容在函数中不被修改

 

在传递参数的情况下const 常和引用& 一起使用,更加有效,相当于将原来参数地址直接传递过去,而不用做像上面的拷贝工作。

1: void function(const int& val) //val为在函数中不被修改

2: void function(const int*& pv) //指针pv 指向的内容在函数中不被修改

 

1.3 const 修饰返回参数

说明:const 用于修饰函数返回值的情况不多,一般用于函数重载。

 

二、const 限定函数

说明:const 限定函数通过 function(…)const 来使用,表示该函数不修改类的成员参数。仅用于修饰类的成员函数,不能用于普通函数和类的构造函数。关于const 函数有个简单规律:

  1. const 函数总能够被调用
  2. 非const 函数只能被非const 变量调用

这也说明了为什么鼓励大家将函数设置为const 类型了。

 

三、const 限定类对象、对象指针和对象引用

说明:const 限定类对象、对象指针和对象引用表示该类的成员不能修改,其成员函数必须都为const 类型,否则就有可能修改成员变量。

 

四、const 限定迭代器(iterater)

说明:const 修饰迭代器(iterater)只需要在之前加上‘const_’即可,要求该迭代器不修改容器中值。

   1:  typedef map<string, string>::iterator mapi;

   2:  typedef map<string, string>::const_iterator mapci;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据