码迷,mamicode.com
首页 > 编程语言 > 详细

c++的const

时间:2014-10-19 15:39:29      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   strong   sp   数据   div   on   

在c++里比在c中功能更强!

#define定义常量,只是简单的文本替换,不做类型检测,容易出错。

const int a = 10;

1 //定义const常量默认是int类型,const定义的符号常量有自己的数据类型
2 //编译更加严格检测类型错误!比#define安全。符号常量有地址,可以指针指向,只是不能通过指针修改。
3 //const定义最后有分号,作为语句来处理。而#define不写分号
4 //可以在函数外部,在函数内部也可。只不过作用域不一样。
5 //c++也支持#define定义符号常量,建议使用更安全的const方式
6     int x = 5;
7     #define T1 x + x
8     #define T2 T1 - T1
9     cout << "T1 = " << T1 << " T2 = " << T2 << endl;

解释:#define只是简单的文本复制!T1=X+X=10  T2=x+x – x+x=x+x=10

改为const定义符号常量:则结果为10和0

const和指针结合

指向常量的指针(注意理解指向常量的含义)

1     int x = 5;
2     const int *p;//指针p本身是变量,*p(指向的内容)也不一定就必须指向的是常量!
3     //注意这里!只不过是不能修改*p,即不能通过指针p修改p指向的内容。
4     p = &x;//p本身的值可以修改
5     p = NULL;
6 
7     //*p = 10;// error C3892: “p”: 不能给常量赋值
8     x = 10;//指针p指向的内容,不是常量,可以修改。只是不能通过指针p去修改而已。

常量指针

 1     int x = 5;
 2     //指针p指向的内容是变量
 3     int * const p = &x;//指针p本身是常量,不能被修改,必须在定义的时候初始化!
 4     *p = 10;//ok
 5     //p = NULL;// error C3892: “p”: 不能给常量赋值

指向常量的常指针

1     int x =5;
2     //指针p本身是常量,p指向的内容也是常量
3     const int * const p = &x;//必须第一次定义就马上初始化
4     //p = NULL;//error C3892: “p”: 不能给常量赋值
5     //*p = 10;//error C3892: “p”: 不能给常量赋值

注意:在函数指针参量里使用const保护,防止修改实参,增强了安全性,增强了可读性。

当然还有常引用的使用。

 

c++的const

标签:style   blog   color   使用   strong   sp   数据   div   on   

原文地址:http://www.cnblogs.com/kubixuesheng/p/4034863.html

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