首页 > 代码库 > c++的const
c++的const
在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 + x8 #define T2 T1 - T19 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。