const和constexper

编译器再编译过程中把const修饰的变量全都替换为值,而与此矛盾的是全局变量只能定义一次,其他地方只是声明,无法获取初值,为此设定了const对象只在文件内有效,然后所有用到它的文件全都重新赋值

共享const对象的方法:

1. 将const常量放在公共头文件中,直接包含头文件,相当于每个都有自己独立的定义

2. 将const对象的定义和声明处全都添加const修饰,即相当于强行添加const属性

一、const的引用

正常情况,引用的类型必须与其引用对象的类型保持一致,但初始化常量引用有两个例外

1. const int &a=42;  int a=2;const int&b=a*2;

2. double a=1.234;const int &b=a;

为啥? 因为在编译过程中,编译器会为a传建一个临时量对象

二、const和指针

指向常量的指针,即自以为指的是常量,自觉地不去改变它的值 int a=1;const int *b=&a;

记忆法:指针的类型即为指向对象的类型,如果对象类型是const int,则指针类型也得是const int

常量指针:指针本身是常量,即不允许修改指向的地址 int a=1;int *const b=&a;

三、常量表达式

字面值是常量表达式,有常量表达式初始化的cosnt对象也是常量表达式

const 和cosntexpr区别,后者必须保证在编译期就可以计算得出,前者则运行的时候即可

constexpr修饰指针时只表示该指针为常量指针,不代表指向常量,需要指向常量则定义为constexpr const int *b=&a;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值