• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

c++ primer中的const限定符

c++ 搞代码 4年前 (2022-01-06) 15次浏览 已收录 0个评论

这篇文章主要介绍了c++ primer中的const限定符,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

const 限定符

 const是一种类型修饰符,用于说明永不改变的对象。const对象一旦定义,就无法再赋新值,所以必须被初始化。

例:const int bufsize = 512;

它的值一旦定义就不能被改变,并且默认情况下,仅对文件内有效。

如果要在多个文件中共享const对象,则需要在定义和声明前都加extern;

初始化和对const的引用

例:

 const int ci = 1024; co<b style="color:transparent">来源gao@!dai!ma.com搞$$代^@码!网</b>nst int &r1= ci; r1 = 42; // 值不可以被改变 int &r2 = ci; //错误,非常量引用不可以指向常量对象。 int i=42; const int &r1 = i; const int &r2 = 42; const int &r3 = r1 * 2; // 以上表达都是正确的,允许一个常量引用绑定非常量对象、字面值,甚至是个一般表达式。 int &r4 = r1*2; // 错误;r4不是一个常量引用,不可以用常量引用来初始化。

下面例外的情况:

 double dval =3.14; const int &r = dval;

上面的表达式是正确的,然而直接如下是错误的;

 double dval= 3.41; int &r = dval; // double类型的引用不可以是int类型。 // 原因:引用的目的是想通过引用来改变dval的值,否则要给r赋值干嘛,所以c++规定是违法的。

原因是在赋给常量引用时,其后常量引用的值就不能被改变,也就无所谓通过引用来改变dval的值了。在编译时上述代码会变成如下形式:

 const int temp = dval; const int &r = temp;

const 指针:

 int errNumb = 0; int *const curErr = &errNumb; // curErr将一直指向errNumb // 指针本身是一个常量并不意味着不能通过指针修改其所指对象的值//这地方是指curErr自己存储的地址不能改变。 const double pi = 3.14159; const double *const pip = &pip; //pip是一个指向常量对象的常量指针

顶层const

顶层const表示指针本身是一个常量;

底层const指针所指的对象是一个常量。

 int i = 0; int *const p1 = &i; //不能改变p的值,这是一个顶层const const int ci = 42; //不能改变ci的值,这是一个顶层const const int *p2 = &ci; //允许改变p2的值,这是一个底层的const const int *const p3 = p2; //靠右的const是顶层的const,靠左的const是底层的const const int &r = ci; // 用于声明引用的const都是底层的const。

总结

以上就是c++ primer中的const限定符的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:c++ primer中的const限定符

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址