关键字const详解

关键字const:

1、用关键字const定义变量指所定义的常量。即恒定的变量,即不可改变的变量。

例:  const int i=10;

此时 i 就是一个整型的常量,其值不能改变。

在C++中如果用const定义一个对象,那么对象中的成员变量就是常数,不能改变(只能为初始化的值),如果用const定义类中的成员函数,那么这个函数就不能去改变对象的成员变量。(相当于this指针为指向常量的指针)

例:  const Car car;//Car为类  car为定义的对象  car为常量

2、const与#define 的区别:

#define 的特点是纯粹的文本替换,不存在类型的问题,而const 定义的常量则是有类型的常量,这样编译器可以更多的察觉错误。

3、当 指针 遇到 const 时:

const int *p;//指向整型常量的指针,即指向的是常量,指针也可以指向的别的地址,但指向的常量的值是不能改变的。

int * const p;//指向整型变量的常量指针,即指向的地址不可以改变,但指向的是变量,是可以赋值的

const int * const p;/指向整型常量的常量指针。

大家首先了解一个例子:

const int *p;  //指向整型常量的指针

int i=10,j=10;  //

p=&i;  //指针指向i  正确

p=&j;  //指针指向j  正确

*p=1;  //错误

j=10;  //正确

指向常量的指针,其指向的对象可以改变,但其指向的内容不允许改变!!!

在C++中有一个const指针的应用,就是在函数传参的时候,本来传值就能解决的问题,但是考虑到程序的稳定性,有如下分析:(假如所传的值是一个对象)

1、如果这个对象很大,所以传值的话,会很浪费内存和时间,并且在子函数开始和结束要调用构造函数和析构函数。

2、如果传入指针的话,就是把对象的地址传入了,这样对象的成员变量就被暴露了,本意是不改变对象的成员变量,但这样会存在隐患。所以我们想到利用const指针,传入的是指向常量的指针。即:(const Car *p或const Car * const p)的形式。这样,在函数中就不会改变对象的成员变量了,也不存在对象拷贝的问题。

3、(C++中)还是上面这个问题,使用引用照样能解决问题,比const指针还方便些,用(const Car &rp)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值