C++ - const常量与指针和引用之间的关系

const常量

1、const常量必须在定义的时候初始化,且不能修改。
2、const常量的默认类型为int类型。
3、#define是一个预处理器编译指令。该编译指令告诉预处理器,在程序中来查找并替换,修改后的程序将在这些变量的值替换后被编译。#define采用宏代换方式进行常量的处理,不具有类型检查机制,存在不安全性。

const与指针

这里写图片描述

const对象的地址只能赋给指向const对象的指针;
指向const对象的指针可以被赋予一个非const对象的地址。

int x = 1;
const int y = 2;
int *p1;
const int *p2;
p1 = &y;        //wrong
p2 = &x;    //right

const与引用

在定义引用时,可以用const进行限制,使它成为不允许被修改的常量引用。const引用可以用常量初始化,但非const引用不能用常量初始化。

const int &ir = 10;
int &jr = 10; //wrong

编译器在实现常量引用时生成了一个临时对象,然后让引用指向这个对象。但该对象对用户而言,是隐藏的,不能访问。例如上述的语句会转化为:

int temp = 10;
const int &ir = temp;

temp将保持到引用的生命期结束。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值