关于const的思考

测试程序如下(在VC8的编译器下):

class Test
{
public:
 int i;
};

void main()
{
 Test t;
 
 //下面两种const的方式是一样的,都是限定Test这个类
 const Test * * pp1;  //语句“(*pp1)->i = 100;”会产生编译错误
 Test const* * pp2;  //语句“(*pp2)->i = 100;”会产生编译错误
 
 //const限定Test*指针类型,说明pp3指向一个const型的指针
 Test * const* pp3;   //语句“(*pp3) = &t”会产生编译错误
 
 //const限定Test**指针类型,所以必须初始化,否则会产生编译错误
 Test * * const pp4 = NULL;


 //下面两种方式是一样的,表示引用的对象是cosnt型的
 const Test& r1 = t;  //语句“r1.i = 100;”会产生编译错误
 Test const & r2 = t; //语句“r2.i = 100;”会产生编译错误
 
 //本意表示r3为const型的引用,但是引用本身就是const型的,所以没有意义
 Test & const r3 = t; //编译器报C4227警告,说明这种写法是过时的

总之一句话,const就是把限定它前面的类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值