2.4.3节练习

2.4.3节练习

练习2.30

const int v2 = 0;        //顶层const;

int v1 = v2;               //整型变量,不是const

int *p1 = &v1, &r1 = v1;    //不是const

const int *p2  = &v1, *const p3 = &i , &r2 = v2;     //p2是底层const, p3既是顶层const,也是底层const, r2是顶层const(用于声明引用的const都是顶层const)。

练习2.31

r1 = v2;      //合法,但两者都不是const,只是普通的引用和赋值。

p1 = p2;    //不合法,p2包含底层const的定义,而p1没有

p2 = p1;    //允许一个指向常量的指针指向一个非常量对象。

p1 = p3; // 不合法,p3包含底层const的定义,而p1没有。

p2 = p3;  // 合法,这两个指针都是底层const