const@C++

时间:2021-08-24 10:05:39   收藏:0   阅读:28

1 基础概念

const int bufSize = 512;
bufSize = 1024;         /* 错误 */

2 const引用

2.1 引用

2.2 const引用

int i = 12;
int &r1 = i;            /* 普通引用 */
const int &r2 = i;      /* const引用 */
r1 = 20;                /* OK */
r2 = 20;                /* Error */
const int i = 10;
int &r = i;             /* 错误, 这可能导致通过引用r修改对象i, 但是i是const对象 */

3 const指针

int i = 10;
int k = 20;
int *p1 = &i;       /* 普通指针 */
*p1 = 10;           /* OK */
int *const p2 = &i;     /* const指针,它指向一个int对象 */
*p2 = 20;           /* OK */
p2 = &k;            /* 错误, p2是const, 它本身不能被修改 */
const int j = 10;
const int *p3 = &j;     /*普通指针, 指向一个const对象 */
*p3 = 30;               /* 错误,指向的是const对象 */
const int *const p4 = &j;   /* const指针,指向一个const对象 */
*p4 = 40;               /* 错误,有两个层次 */

4 如何理解const int*、const int * const和int const *

参考StackOverflow: What is the difference between const int*、const int * const and int const *
两条原则

int a = 5, b = 10, c = 15;

const int* foo;         // foo是一个指针,指向的类型为const int
foo = &a;

//*foo = 6;             //  这是条错误语句,因为foo指向的类型为const int,所以不能修改它所指向的数据
foo = &b                // foo是指针,但不是const指针,因此它本身是可以被修改的

原文:https://www.cnblogs.com/TaipKang/p/15178655.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!