重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要讲解了c++ primer中const限定符的使用方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
10年的永定网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整永定建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“永定网站设计”,“永定网站推广”以来,每个客户项目都认真落实执行。
const 限定符
const是一种类型修饰符,用于说明永不改变的对象。const对象一旦定义,就无法再赋新值,所以必须被初始化。
例:const int bufsize = 512;
它的值一旦定义就不能被改变,并且默认情况下,仅对文件内有效。
如果要在多个文件中共享const对象,则需要在定义和声明前都加extern;
初始化和对const的引用
例:
const int ci = 1024; const 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限定符的使用方法有进一步的了解,如果还想学习更多内容,欢迎关注创新互联行业资讯频道。