我们好,我是梁唐。
这是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;