首页 > 编程 > C++ > 正文

详解C++中的const的使用介绍

2020-02-24 14:27:06
字体:
来源:转载
供稿:网友

const是C++中常用的类型修饰符,公共类型引用类型修饰符const指定的类型,下面武林技术频道小编为大家带来详解C++中的const的使用介绍,希望对你学习这方面知识有所帮助。

 C++中的const的使用详解

const在c/c++中还是会经常出现的,并且如果不理解const会在编程出现的错误而不知所措,无法理解。下面从几个角度简要理解const的内容,应该还是蛮有用的。

const与指针类型

const int*p = NULL; 和int const*p = NULL;是等价的。因为const都在“ * ”的前面,其实是以*为标志的。

1. int x = 3; const int *p = &x; // p = &y;正确 , //*p = 4;错误 

指针其实一般是4个字节长度。p的内容是存储0x….,就是其他数据的地址。因此这里的const修饰*p就是说:*p的内容是不可直接被赋值改变的。

而p本身存储的地址是可变的,可以变成其他的0x…..当p指向其他的数据地址时,*p也就随之变成新的数据。

int x = 3; int *const p = &x; //p = &y是错误的

总结:其实是看这个const是在的前面还是后面,如果在的前面,则表示修饰的是整个“ p ”,而在后面,则表示修饰的是只有p。

显然有:在前面,则表示整个*p是const的,因此p可以指向其他的地址,而*p则是const的,无法改变。同理,int *const p = &x;则表示指针p是固定的,就是说p指针存储的地址是固定的,其内容是const,因此无法修改为其他值(即指向其他地址)。

const与引用

int x = 3; const int &y = x; //x = 10;正确 //y = 20; 错误 

引用前面有const,所以不能通过y来修改x的值。

本人的理解:const int &y就是相当于const int *y1 = &x;然后y = 20就相当于*y1 = 20;这显然时不允许的(就如前面所说的,*p时const,无法直接赋值给*p)。因为引用就相当于给x取了一个别名y,此时y不就是y1指针所指的内容吗?也就是说上面的例子:y = 20;就是相当于 *y1 = 20.

错误的const使用

其他:const int x = 3; int *y = &x; 不能通过编译。因为可能通过*p修改本应该是const的x;
int x = 3; const int *y = &x; 这是可以的,这里的x是可变的,通过由于*y是const的,因此*y就是只能是读取x的值,而不具有写入x的权利。

总结:可以说是只能把一个东西权限缩小,而不能使其原始的权限增大。

const在函数中的应用

主要是防止函数的误操作,对值进行更改

void fun(const int&a, const int&b) { //这里就不能对a或b进行更改,否则会编译出错 }

以上文章就是详解C++中的const的使用介绍,希望对大家有所帮助,切记要了解透彻,确保安全后再进行相关操作,更多知识尽在武林技术频道,欢迎大家查阅。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表