C++const限定符

1.const对象的初始化

如果利用一个对象去初始化另外一个对象,则 它们是不是const都无关紧要。
int i = 42;
const int ci = i;   //正确,非const对象被拷贝给了const对象
int j = ci;            //正确,const对象拷贝给了非const对象
ci的常量特征仅仅在执行改变ci的操作时才会发挥作用。
一旦拷贝完成,新的对象就和原来的对象没有任何关系了。

2.const引用
引用的类型必须与其所引用的对象类型一致。
但是在初始化常量引用时允许用任意表达式作为初始值,只要表达式的结果能转换成引用的类型即可。
int a = 10;  
const int b = 20;
const int &c = a;   //正确
const int &c = b;   //正确:初始化常量引用时允许用任意表达式作为初始值
int &d = c;         //错误:无法从const int转换为int&

3.const指针
与const引用的使用方法一致。
《C++Primer》中的经典解读:
所谓指向常量的指针或引用,不过是指针或引用“自以为是”罢了,他们觉得自己指向了常量,所以自觉地不去改变所指对象的值。

//下面的示例代码来自:翁恺老师的网络课程《 面向对象程序设计-C++

(1)  char *const q = ""abc;  //q is const
      *q = 'c';    //OK
       q++;        //ERROR
(2) const char *p = "ABCD";       //(*p) is a const char
     *p = 'b';                                  //ERROR! (*p) is the const
      p++;                                     //OK

示例: Person p1("Fred",200)
           const Person* p = &p1;  
           Person const* p = &p1;
           Person *const p = &p1;
           const Person *const p = &p1;
const写在*的前面,对象是const;const写在*的后面,指针是const;

4、const与函数重载




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值