1. Const

const

const含义

常类型的变量和对象是不可更新的

const作用概述

  • 定义常量
  • 与#define的区别
    – const常量具有类型,可以进行安全性检查
  • 只有整数,枚举,以表达式初始化时才可以作为常量表达式,其他时候只是const限定。
  • 节省空间
    –只给出汇编地址而不是立即数(define
    –程序运行时只有一份拷贝,而不是多个(define

const默认文件局部变量

  • 非const默认为extern,const需要显示声明(并初始化

定义常量

常量不可更改,变量可更改
把一个变量引用数据的方式指定为const的话,就意味着你不能通过这个变量对被引用的数据进行写操作。就是说你不希望数据被你或别人通过这个变量修改其数据。

指针

  1. 如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;

  2. 如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。

(1)指向常量的指针

1.不能用常量指针修改指向的对象值。

2.必须使用const void*类型的指针保存const对象的地址(不能用void*)。

3.const对象指针可指向非const对象,但不能修改对象值(通过其他指针

(2)常指针

  • 常指针必须进行初始化,初始化后指针值不能更改1
  • const指针指向的值可以通过非const指针修改
  • const常量地址不能赋给变量指针

(3)指向常量常指针
结合前两种情况理解

函数const

修饰返回值

  1. const int无意义:返回值本身就是赋值给其他变量
  2. const int* 指针指向内容不变
  3. *int const 指针本身不可变

修饰函数参数

  1. const int 和int *const无意义,本身形参在函数内值传递就不会改变
  2. const int* 参数所指内容不可变
  3. 对于非内部输入数据void func(A a)改为void func(const A &a),参考类const 6

类const

  1. const成员变量必须通过初始化列表进行初始化,例:
    Apple::Apple(int i): apple_number(i){}
  2. const对象只能访问const成员函数,非const对象可以访问所有。原因:由于常成员函数不会修改被操作对象,由于常对象不能修改自身的数据成员,因此只能调用不会修改内容的常成员函数
  3. 当一个对象调用成员函数时,编译器将对象地址赋给this指针,存取数据成员时隐含调度this指针(X * const this 不能被赋值)
  4. 只有常成员函数可以操纵常对象(其this指针为const A * const this),常成员函数只能访问成员变量,不能修改。原因:因为常成员函数声明自己不会修改被操作对象,而常对象不能被修改,因此常对象只能被常函数调用以确保安全性
  5. 常成员函数中可以引入非常数据成员,但不能改变其值
  6. 对象的常引用(禁止更新),用于参数传递中减少拷贝构造函数

初始化常量的其他方法:
在外面初始化const int Apple::apple_number=10;

直接写成static const int apple_number

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值