您的位置:首页 > 其它

顶层const与底层const

2017-01-05 23:01 162 查看
/*顶层const与底层const
*const :常量
*/
#include <iostream>
using namespace std;

int main()
{
    int a1 = 1;         
    int* p1 = &a1;      --> p1是指针指向a1
    int*& r1 = p1;      --> r1 是 p1 的别名
    int* const k1 = &a1; -> k1 指向 a1, k1不能改变指向
    int* const& t1 = k1; -> t1 是 k1 的别名
 
    const int a2 = 2;    -> a2 是常量
    const int* p2 = &a2; -> p2 指向 a2, 不能通过 p2 改变 a2
    const int*& r2 = p2; -> r2 是 p2 的别名

    const int* const r3 = &a2; -> r3 指向 a2
                                  r3 不能改变指向
                                  不能通过 r3 改变 a2
    const int* const& r4 = r3; -> r4 是 r3 的别名

    const int& a3 = 1000;      -> a3 是一个常量的别名
    ----------------------------------------
         底层const    顶层const             
           \|/          \|/                 
          const int*   const p = &a;
     
        底层const: 表示指针所指向的变量是个常量
        顶层const: 表示指针本身是个常量

        指针本身是一个对象,指针实际对应着内存单元的一段存储空间,指针所指向的也是一个数据对象,
因此,指针是一个常量与指针所指向的是一个常量是两个完全不同的概念
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: