c++ primer中的const限定符

所属分类: 软件编程 / C 语言 阅读数: 134
收藏 0 赞 0 分享

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++中派生类的构造函数

这篇文章主要介绍了深入解析C++中派生类的构造函数,是C++入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

解析C++中多层派生时的构造函数及一些特殊形式

这篇文章主要介绍了解析C++中多层派生时的构造函数及一些特殊形式,特殊形式主要针对基类和子对象类型的构造函数内容,需要的朋友可以参考下
收藏 0 赞 0 分享

简单介绍C++编程中派生类的析构函数

这篇文章主要介绍了C++编程中派生类的析构函数,析构函数平时一般使用较少,需要的朋友可以参考下
收藏 0 赞 0 分享

深入解析C++中类的多重继承

这篇文章主要介绍了深入解析C++中类的多重继承,包括多重继承相关的二义性问题,需要的朋友可以参考下
收藏 0 赞 0 分享

详解C++中基类与派生类的转换以及虚基类

这篇文章主要介绍了详解C++中基类与派生类的转换以及虚基类,是C++入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

解析C++编程中的继承方面的运用

这篇文章主要介绍了解析C++编程中的继承方面的运用,是C++入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

详解C++编程的多态性概念

这篇文章主要介绍了C++编程的多态性概念,是C++入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

c++统计文件中字符个数代码汇总

本文给大家汇总介绍了3种使用C++实现统计文件中的字符个数的方法,非常的简单实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

详解C++编程中的虚函数

这篇文章主要介绍了详解C++编程中的虚函数,包括在什么情况下应当声明虚函数的相关讲解,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言putenv()函数和getenv()函数的使用详解

这篇文章主要介绍了C语言putenv()函数和getenv()函数的使用详解,用来进行环境变量的相关操作,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多