C++ const 关键字的简单总结

C++程序员面试时十有八九会碰到const的问题,所以为了能快点找到工作,还是要了解一下const的用法大笑

 

1. 用const修饰非指针变量,这是最简单的情况

    const int a = 10;
    int const b = 20;

    a = 11;                 // error C3892
    b = 21;                 // error C3892

加了const以后,a,b两个变量都变成read only的变量,试图修改其变量值的代码在编译时会出错。const int和int const是一样的,const前后顺序无所谓。

 

2. 当const和指针纠结在一起的时候,情况变得有点混乱

  • 定义const变量的指针,指针指向的内容为read only
    char buf1[32];
    char buf2[32];

    const char *p = buf1;
    //char const *p = buf1;     // same as above
    //const (char*) p = buf1;   // error C4430

    p = buf2;                   // OK
    *p = 'A';                   // error C3892

const char和char const是一样的,注意const (char*) p这种写法是错误的,至少MS的编译器是这么认为的
 

  • 指针自己为const变量,自己是read only
    char buf1[32];
    char buf2[32];

    char* const p = buf1;
    //char *const p = buf1;     // same as above, but looks weird

    p = buf2;                   // error C3892
    *p = 'A';                   // OK

char* const和char *const是一样的,*号随便和const及char中的哪一个放一起都无所谓,但*const看上去有点怪

 

  • 被指向的变量和指针都为const,即都为read only
    char buf1[32];
    char buf2[32];

    const char* const p = buf1;

    p = buf2;                   // error C3892
    *p = 'A';                   // error C3892

 

 总结:关键看*号的位置,const在*号前的是const变量的指针,const在*号后的指针本身为const。不必绞尽脑汁去考虑const char和char const的区别,其实它们没有区别大笑

 

3. 函数参数中出现const,情况和2类似

4. 类的成员函数为const

    牢记:标记为const的函数不修改data member的值,不能调用不是const的函数

但愿没有误导别人,但愿读MSDN时没看走眼

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值