常量const详解

本文介绍了C++中的const关键字,作为对宏定义缺陷的补充,const提供了更安全的常量定义方式。const主要应用于三个方面:const常量、const指针和const成员函数。对于const常量,必须初始化。const指针则分为指向常量的指针、指针常量和指向常量的指针常量。最后,const成员函数确保函数只能进行读操作,防止意外修改成员变量。

const是C++中的一个关键字,为什么会有const呢?主要是为了弥补因宏define产生的一些语法的错误。众所周知,define就是传统的宏定义,将某些常量赋值给一个变量,但由于宏定义在编译过程中只是单纯的进行赋值替换,并不会对赋值语句进行检查,因此会存在很多潜在的威胁,一旦定义出错,整个调用过程也讲出错。所以C++创始人为了避免这种错误才提出了用const来代替,同时会对所定义的常量进行语法检查。
const主要应用在三个方面:const常量、const指针和const成员函数。
1、const常量
调用形式:const 类型 变量名 = 常量;
每个const常量都必须进行初始化。例子:const int a = 10;a就是一个整型常量;const int b[3] ={1,2,3};b是一个整型数组。因为const常量比较简单,在此我们就不做赘述,只要记得一定要初始化成相同类型的常量即可。
2、const指针
const指针分成以下三种定义:指向常量的指针、指针常量、指向常量的指针常量。
(a)、指向常量的指针也就是说*p是常量,p不是常量

const int a = 1;
const int b = 4;
int c = 6;
const int* p = &a;  //首先必须进行初始化,其次const约束的是*p也就是说,p指向谁,谁就是常量
p = &b;
p = &c; //p并不是常量,可以改变,也就是说p可以指向任意的整型值,但是当p指向这个变量之后,变量将变成常量值,也就是说,此时c应该是常量。
c = 16;  //c是整型变量,所以可变。
*p = 12; //此句不通,因为*p是常量,不能改变

(b) 指针常量
指针常量约束的是指针指向,也就是说p是常量,*p不是常量
下面用代码来说明:

int a = 5int b = 6;
int * const p = &a;  
 //也就是说p指向的变量并不一定是常量,这里的const约束的不是指向的对象而是指针指向
p = &b;  //这条语句并不能通过,因为p的指向不能发生变化,因为指向是常量。
* p = 15;  //可以通过编译,因为*p不是常量

通俗的话讲:指向的对象是变量,但指针不是变量。并不能再改变指向关系。

(c)、指向常量的指针常量,两者均不可做改变

int a = 5;
int b = 6;
int const * const *p = &a;
p = &b;//不能通过编译
* p =10;//不能通过编译

无论是指针还是指向的变量都不可以变化。都是常量!!!

3、const成员函数
调用形式: 类型 函数名 const;
也就是说此函数只允许读操作,不能改变成员变量的值,只能进行一些返回或读出操作。这个作用只要应用于大型程序中,防止某些类函数被别人改动。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值