标签:c++ 指针 const 顶层const 底层const
看到这个顶层const和底层const,纠结了好久,经常记不住。
于是本人的强迫症发作,一定要记住,就写下了这个笔记...
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int b = 0; int c = 1; const int* pa = &b;//这里是底层const,不能改变*pa的值; //*pa = 2; 错误 pa = &c;//改变pa本身 int* const pb = &b;//这里是顶层const,不能改变pb本身的值; //pb = &c; 错误 *pb = 2;//改变pb所指对象的值 return 0; }《C++Primer》中对于顶层const和底层const是这样描述的:
我们知道,指针本身是一个对象,因为,指针实际对应着内存单元的一段存储空间,然而,指针所指向的也是一个数据对象,因此,指针是一个常量与指针所指向的是一个常量是两个完全不同的概念, 顶层 const 表示的是 指针本身是一个常量 , 底层 const 表示的是 指针所指的对象是一个常量 ,更一般情况下, 顶层 const 可以表示任意对象是一个常量 ,这对于算术类型、类、指针等任何数据类型都是成立的, 底层 const 则与指针和引用等复合类型的基本类型部分有关 ,比较特殊的是,指针既可以是顶层 const 也可以是底层 const ,这一点与其他类型区别明显。
2. 顶层 const 与底层 const 在执行拷贝操作时的不同
标签:c++ 指针 const 顶层const 底层const
原文地址:http://blog.csdn.net/puppet_master/article/details/45074213