C++Primer第五版第二章练习2.31

文章讲述了C++中指针和引用的顶层const与底层const的区别,分析了合法和非法的语句实例,强调了在赋值和拷贝操作中的规则:常量性质不能随意改变,需保持底层const资格的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
已知声明:
const int v2=0;//顶层
int v1=v2;//变量
int *p1=&v1, &r1=v1;//p1:指向整型变量的指针,r1绑定到整型变量的引用
const int *p2=&v2, *const p3=&i, &r2=v2;//p2:指向整型常量的指针,底层const;p3:指向整型变量的常量指针,顶层+底层;r2:绑定到整型常量的引用,底层const。

练习2.31:下面的语句哪些是合法的,说明顶层const和底层const在每个例子中有何体现
r1=v2;
//r1, 绑定到整型变量v1的引用, v2整型常量
//等价于:v1=v2;合法。
//顶层const不受影响

p1=p2;
//p1, 指向整型变量的指针,p2, 指向整型常量的指针,类型不一致,不合法
//p2具体有底层const资格,p1没有底层const资格,p2是常量,无法转换成非常量。

p2=p1;
//p2指向整型常量的指针,允许指向非常量对象。合法。
//底层const资格不同,p1指向非常量,可以转换成常量

p1=p3;
//p3具有底层const资格,指向常量,不能转成非常量。
//不合法

p2=p3;
//p2,p3,具有相同的底层const资格,p3的顶层const不影响
//合法。
//执行拷贝操作时,常量是顶层const,不受影响。拷入和拷出的对象必须具有相同的底层const资格,或者两个对象的数据类型能够转换。一般来说,非常量可以转成常量,反之则不行。
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值