C++ 中的const 用法---看书笔记

1.值代替

用于代替c中预处理器的#define,因为预处理器没有类型检查功能,所以会产生一定的小问题。

       #define BUFSIZE 100

       const int bufsize=100;

这两者的作用是相同的。




2.const变量定义在头文件中 。

const变量在类中时初始化通过  1. 在构造函数中用初始化列表 

                                                   2. 通过显示static 用static的方法初始化




3. const在运行过程中的值不发生变化

  所以一般来讲  如果我们需要一个变量不发生改变就是用const




4const在集合中

 const int a[3]={2,3,4};  //这里的const意思是  不能改变的一块存储空间,已经分配了空间

 int  f[a[2]];    //这样便是非法的了    程序在编译期间不知道a[2]的内容

a[2]=3;         // 这也是非法的





二、const与指针

1.指向const的指针----  const int* p;     或  int const* p;   (效果一样)。

          通过该指针无法修改其指向的值。

2.const 指针     ------    int* const p=&d;

         指针指向的地址不会发生改变,且定义是一般会赋个初值。

 



三、const的赋值

1.不能将一个const变量的地址赋值给一个非const指针,但是总是能够用强制类型转换来实现这样的赋值。

c中 

     const int e=4;

      int *a=(int*) (&e);

在c++使用更加安全的const_cast机制

      const int e=2;

       int* a=const_cast<int*>(&e);



四、const在函数参数和返回值中

1.函数参数--用于函数按值传递,可加const修饰

    但是在函数内部用const限定要优于函数参数(避免引起用户调用混淆)


2.返回const值

     按值返回内部变量时------------加不加const无意义,因为他总是作为右值使用。

      但按值返回自己定义的变量时--------加上const便代表不能作为左值使用。

       非const指针-->const指针 YES

       const指针------>非const指针 NO

       


     



 

         

















    


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值