c++ primer 中讲的    顶层const 和 底层 const   以前没搞懂的顶层const和底层const,这次看了后感觉明白了. 首先,const是一个限定符,被它修饰的变量的值不能改变. 对于一般的变量来说,其实没有顶层const和底层const的区别,    而只有向指针这类复合类型的基本变量,才有这样的区别. 一 如何区分顶层const和底层const 指针如果添加const修饰符时有两种情况: 1 指向常量的指针:代表不能改变其指向内容的指针.声明时const可以放在类型…
1. 顶层 const 与底层 const 概念 指针本身是一个对象,由于,指针实际相应着内存单元的一段存储空间,然而,指针所指向的也是一个数据对象,因此,指针是一个常量与指针所指向的是一个常量是两个全然不同的概念, 顶层 const 表示的是 指针本身是一个常量, 底层 const 表示的是 指针所指的对象是一个常量,更普通情况下, 顶层 const 能够表示随意对象是一个常量,这对于算术类型.类.指针等不论什么数据类型都是成立的, 底层 const 则与指针和引用等复合类型的基本类型部分有关…
底层const是代表对象本身是一个常量(不可改变):      顶层const是代表指针的值是一个常量,而指针的值(即对象的地址)的内容可以改变(指向的不可改变): #include <iostream> int main() { ; int* const p1=&i; //-----不能改变p1的值,这是一个顶层const const int b=i; //-----不能改变b的值,这是一个顶层const(一般变量前const都是顶层const) const int* p2=&…
extern const  int ci =42; const int * p2  = &ci; extern const  int *const p3= p2; int *p= p3;   //错,p没有底层const. 书上的解释是: p3是顶层const 也是底层const,拷贝p3可以不在乎其顶层const, 但是p3指向的是一个常量,因此不能用P3初始化p,  而p 只能指向非常量.  理解他说的意思是因为一个指向常量一个指向非常量. 但自己仔细想想, 底层const也可以指向一个非常…
As we’ve seen, a pointer is an object that can point to a different object. As a result,we can talk independently about whether a pointer is const and whether the objectsto which it can point are const. We use the term top-level const to indicate tha…
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7050815.html C++之const限定符(顶层const,底层const) const初始化 const的特点: 用const加以限定的变量,无法改变. 由于const对象定义之后就无法改变,所以必须对其进行初始化. const对象的常量特征仅在尝试改变它的时候表现出来,其他时候和变量无异. const初始化: const int bufSize = 512; //b…
1.首先顶层const和底层const是围绕指针*p的说法.底层:const int *p,const不是修饰指针p,指针所指的值不能改变:顶层:int *const p,const修饰指针p,指针本身不能改变:(看const在*的位置) 2.this指针,指向对象本身,是一个*const this型指针:一个类的this指针本身地址不变,但是调用不同 的对象时会给其不同的对象地址. 3.引用,本身也一个顶层const(常量指针)type *const p,所以应用可以改变原来变量的值,所以我们…
本题目对应于 C++primer(第四版)中 第十章的文本查询类(TextQuery) 用到的知识有: 顺序容器 vector 关联容器 set,map 标准输入输出流,文件流,字符串流 //写一个文件 从文件中读单词 输出单词的次数和所在的行数 //... #include <iostream> #include <fstream> #include <sstream> #include <string> #include <set> #inc…
转载:http://blog.csdn.net/ace_fei/article/details/7386517 说明: C++ Primer, Fourth Edition (中英文)下载地址:http://download.csdn.net/detail/ace_fei/4165568 以下内容截取自该书籍,都是一些基础而又容易忽略的知识点. 初窥输入/输出 endl 是一个特殊值,称为操纵符,将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区.通过刷新缓冲区,用户可立即看到写入…
const 是constant 的缩写,“恒定不变”的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:“Use const whenever you need”. 1.用const 修饰函数的参数 如果参数作输出用,不论它是什么数据类型,也不论它采用“指针传递”还是“引用传递”,都不能加const 修饰,否则该参数将失去输出功能.const 只能修饰输入参数: 如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地…