EasyC++28,指针和const

2023-01-04 0 906

我们好,我是梁唐。

这是EasyC++系列产品的第28篇,来谈谈操作符和const

想崇尚更快写作新体验的老师,能出访github库房:EasyLeetCode。

操作符和const

他们晓得constURL润色的是不容表达式,将它和操作符一同采用,会有许多错综复杂的地方性。

有关采用const来润色操作符,有三种相同的形式。第二种是让操作符对准两个自表达式第一类,这种能避免采用该操作符展开修正对准的值。第三种则是将操作符这类新闻稿为自表达式,能避免发生改变操作符对准的边线。上面他们上看下技术细节。

对准自表达式的操作符

具体来说是对准自表达式的操作符,涵义是操作符的类别是两个自表达式类别。因此写出:

const int * p;

能认知成p是两个操作符,它的类别是const int,也是自表达式类别。它既能用以对准两个自表达式类别,也能对准两个非自表达式类别,上方的这三种形式都是不合法的:

int age = 23; const int* p = &age; const doubleprice =233; const double* pt = &price;

但是反过来,将两个const类别的表达式赋值给两个非const的操作符是非法的:

const int age = 23; int* p = &age;// 非法

如果非要这种做,能采用const_cast运算符展开强制转换,这个他们会在之后的文章当中讨论。

另外还有两个很有意思的点,如果他们将两个非const类别的表达式赋给了const类别的操作符,虽然他们无法通过操作符修正对应的值,但是通过表达式修正却是能的:

int age = 23; const int* p = &age; *p = 233; // 非法 age = 233; // 不合法

还有,他们无法修改操作符对准的值,但是修正操作符对准的边线是能的:

int age = 23; int price = 233; const int* p = &age; p = &price;

const操作符

上面他们介绍了对准const的操作符,还有另外一种操作符叫做const操作符。const操作符指的是操作符这类是const润色的,他们无法修正操作符对准的边线。

int age = 23; int* const p = &age;

但是他们修正操作符对准的值是能的:

*p = 2333; // 不合法

操作符和内容都不容变

当然他们也能将三种const叠加采用,让操作符对准的第一类以及第一类的值都不容修正:

const int * const p = &age;

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务