const关键字的作用及应用场景

1 篇文章 1 订阅
订阅专栏

一、常量

C++定义常量有两种方式

1. #define 宏常量:#define 常量名 常量值

  • 通常在文件上方定义,表示一个常量
  • 宏常量不可以修改
  • 如:
//1、宏常量
#define MAX 999

int main() {
	return 0;
}

2. const修饰的变量: const 数据类型 常量名 = 常量值

  • 通常在变量定义前加关键字const,修饰该变量为常量,不可修改
  • 常量不可以修改,const限定为只读状态,防止修改操作
  • 如:
int main() {
	//1、const修饰变量
	const int month = 12;
	cout << "一年里总共有 " << month << " 个月份" << endl;
	return 0;
}

二、const修饰指针

const修饰指针有三种情况:

1. const修饰指针——常量指针( const int *p = &a )
2. const修饰常量——指针常量( int * const p = &a )
3. const即修饰指针,又修饰常量(const int * const p = &a )

(1)const修饰指针——常量指针

常量指针:指针的指向可以修改,但是指针指向的值不可以修改.
在这里插入图片描述

(2)const修饰常量——指针常量:

指针常量:指针的指向不可以修改,但是指针指向的值可以修改.
在这里插入图片描述

(3)const即修饰指针又修饰常量:

特点:指针的指向不可以修改,指针指向的值也不可以修改.
在这里插入图片描述

(4)const修饰指针总结

在这里插入图片描述

三、const修饰结构体

作用:用const来防止修改操作

#include <iostream>
#include<string>
using namespace std;

//结构体定义
struct Person
{
	string name;  //姓名
	int age;      //年龄
};

//将函数中的形参修改为指针,可以减少内存空间的使用,即不会复制新的副本出来占用空间
void printPerson(const Person *person)       //加const防止函数体中的修改操作
{
	//stu->age = 100;                                    //操作失败,因为加了const修饰
	cout << "姓名:" << person->name << " 年龄:" << person->age  << endl;
}

int main() {

	Person per = { "张三",18 };

	printPerson(&per);


	return 0;
}

四、常量引用

作用:常量引用主要用来修饰形参,防止形参改变实参

int & ref = 10 //错误,引用本身需要一个合法的内存空间,10是一个常量

const int & ref = 10// 正确,加上const之后,编译器将代码修改为 int temp = 10; const int & ref = temp;
ref = 30;           //错误,此时的ref已经是常量,变为只读状态,所以不可以修改
#include <iostream>
#include<string>
using namespace std;

//打印数据函数
void showValue(const int &val) {
	//val = 100;          //错误,val现在为只读状态
	cout << "val=" <<val << endl;
}

int main() {

	//函数中利用常量引用防止误操作修改实参
	int a = 10;
	showValue(a);

	return 0;
}

总结:实际上和const修饰结构体一样,当需要打印数据时,并且当数据量太大,不想复制一份数据到内存空间时,就传一个地址或者引用,此时形参改变,实参也会跟着改变,所以此时需要防止实参被修改!

五、const修饰成员函数

(1)常函数

  • 成员函数后加const后我们称为这个函数为常函数
  • 常函数内不可以修改成员属性
  • 成员属性声明时加关键字mutable后,在常函数中依然可以修改
#include <iostream>
#include<string>
using namespace std;

class Person {
public:
	//1、this指针的本质是一个指针常量(Type* const pointer;),指针的指向不可修改,但是指针指向的值可以修改
	//2、如果想让指针指向的值也不可以修改,需要声明常函数,即在成员函数后面加上const

	void ShowPerson() const
	{

		m_A = 100;     // 错误,函数加上了const,属性不可以修改
		               /*
		               	 1、m_A = 100 的本质是 this->m_A = 100,this指针指向的对象的数据是可以修改的
		                 2、this指针的本质是指针常量,this指针的指向不可以修改,即this = NULL; 错误
					     3、此处的this指针的本质是指针常量:Person * const this;
					   */
						/* 
						   1、在成员函数后面加const,修饰的是this指针,让this指针指向的值也不可以修改
						   2、const Person * const this;指针的指向,以及指针指向的值都不可以修改
						*/

		this->m_B = 100; //正确,因为加上了mutable关键字

	}
public:
	int m_A;
	mutable int m_B; //加上mutable关键字之后成为特殊变量,即使在常函数中,也可以修改这个值
};

void test01() 
{
    Person person;
    person.ShowPerson();
}

int main() 
{
	test01();
	return 0;
}

(2)常对象

  • 声明对象前加const称该对象为常对象
  • 常对象只能调用常函数,普通对象既可以调用普通成员函数,也可以调用常函数
#include <iostream>
#include<string>
using namespace std;

class Person {
public:
	void ShowPerson() const
	{
		//m_A = 100; // 错误,函数加上了const,属性不可以修改
		this->m_B = 100; //正确,因为加上了mutable关键字
	}
	void func()
	{

	}
public:
	int m_A;
	mutable int m_B; //加上mutable关键字之后成为特殊变量,即使在常函数中,也可以修改这个值
};

void test02()
{
    const Person p={1,2}; //在对象前加const,变为常对象
    //p.m_A = 100;        // 错误,常对象不允许修改成员属性
    p.m_B=100;            // 正确,m_B是特殊值,在常对象下也可以修改

    //常对象只能调用常函数
    p.ShowPerson();		  //正确
    p.func();             //错误,因为普通成员函数可以修改成员属性,而常对象的本质是不允许修改成员属性
}

int main() 
{
	test02();
	return 0;
}
浅析c++ 中const关键字
08-30
在实际应用中,const关键字可以用于多种场景,例如: 1. 定义常量:使用const关键字可以定义一个常量,这个常量不能被改变。 2. 指针常量:使用const关键字可以定义一个指针常量,这个指针的地址不能被改变。 3. ...
const关键字作用
Pumpkin_O的博客
07-02 145
一、const的定义 二、const使用原理 1、const+全局/局部变量 2、const修饰指针/引用 3、const修饰函数参数 4、const修饰函数返回值 5、const成员函数和数据成员 6、const修饰类对象 二、const与宏定义的区别 三、const与static的区别
char *const p ,char const *p,const char *p的区别
zq9955的博客
12-29 554
char * const p; 常量指针,p的值不可以修改 char const * p; 指向常量的指针,指向的常量值不可以修改 const char *p ; 和char const *p相同
Const关键字用法总结
最新发布
dearzhangxp的博客
07-29 618
const关键字在 C 和 C++ 编程语言中用于定义常量,即那些一旦初始化后其值就不能被修改的变量。介绍Const关键字作用,主要理解指针常数与常数指针:const int *ptr, int const *ptr, int * const ptr, const int * const ptr区别
const作用和用法
热门推荐
weixin_43282440的博客
02-11 1万+
一、const作用 1.为给读你代码的人传达非常有用的信息,声明一个参数为常量是为了告诉用户这个参数的应用目的; 2.通过给优化器一些附加信息,使关键字const也许能产生更紧凑的代码; 3.合理使用关键字const可以使编译器很自然的保护那些不希望被修改的参数,防止无意的代码修改,可以减少bug的出现; 二、const的用法 常变量: const 类型说明符 变量名 常引用:...
const关键字作用应用场景
baimocun的博客
07-04 597
类型检查:const关键字定义的常量具有类型检查,而宏定义(使用#define)的常量没有类型检查。错误定位:使用const关键字定义的常量在编译错误时能够提供更准确的错误定位,编译器可以指示出具体的常量名称和类型。内存使用使用const关键字定义的常量会在内存中分配存储空间,而宏定义的常量只是简单的文本替换,没有存储空间的分配。同时,也可以防止在代码中不小心修改常量的错误,提高了代码的可维护性。调试信息:使用const关键字定义的常量可以在调试器中查看其值,而宏定义的常量无法在调试器中查看。
const有哪些作用
三月,有人呼唤你的名字
07-13 2333
const有哪些作用 常类型也称为const类型,是指使用类型修饰符const说明的类型。const是C和C++中常见的关键字,在C语言中,它主要用于定义变量为常类型以及修饰函数参数与返回值,而在C++中还可以修饰函数的定义,定义类的成员函数。常类型的变量或对象的值是不能更新的。 一般而言,const有以下几个方面的作用: 1)定义const常量,具有不可变性。 2)进行类型检查,使编译器对处理内容有更多了解,消除一些隐患。 3)避免意义模糊的数字出现,同样可以很方便地进行参数检查和修改。同宏定义一样,可以
c语言中的const关键字作用及用法_详细+例子
weixin_46048919的博客
07-23 8833
对很多c语言初学者来说,const关键字可能会是一个比较易混淆的地方,在这里我给大家做稍微详细一点的解释,希望能帮助你解决问题。
C++ const关键字的实例用法
08-25
9. const关键字应用场景const关键字可以应用在各种场景中,例如修饰变量、函数参数、返回值等,提高程序执行效率,防止修改和篡改。 10. 总结:const关键字是一个非常重要的概念,在C++中有广泛的应用场景,...
php中static和const关键字用法分析
10-20
在类中定义常量时,必须同时指定值,并且使用const关键字进行修饰,常量名一般全部使用大写字母。常量的访问方式与静态属性类似,使用类名直接访问,且不能使用$符号,也不能使用对象实例访问,必须在类定义的外部...
C++语言const 关键字使用方法图文详解
08-25
在C++编程语言中,`const`关键字是一个非常重要的元素,用于限定变量、函数参数、成员函数等,确保它们在程序执行过程中不可修改。...理解`const`在不同场景下的应用,能够提高代码的可读性和可靠性。
C++编程中的const关键字常见用法总结
07-30
C++编程中的const关键字是一种基础知识,了解const关键字使用场景和原理是C++入门学习的必备知识。本文将总结C++编程中的const关键字常见用法,帮助读者更好地理解和应用const关键字。 一、定义常量 const关键字...
Const使用情况
Andy_Vincy的博客
08-23 655
在C程序中,const的用法主要有定义常量、修饰函数参数和修饰函数返回值。而在C++程序中,它除了上述功能外,还可以修饰函数的定义体,定义类中某个成员函数为恒态函数,即不改变类中的数据成员。对于定义常量的用法,这里就不多说了,重点看一下修饰函数参数、修饰函数返回值以及修饰函数的定义体。     0)修饰变量或指针 int ii=0;  const int i=0;           //i是...
const修饰结构体
weixin_46245201的博客
08-02 1771
形参为:const student *s是指针传递 形参为:const student s值传递(复制一份) 为了避免地址传递时值被修改,可以加const误操作。 #include <iostream> #include "string" using namespace std; //定义学生结构体 struct student { //成员列表 string name; //姓名 int age; //年龄 }; void printStudent(con
C++关键字const作用
梅杏柿的博客
02-27 1964
const作用(一旦被修饰,被修饰的量不能更新) 1、修饰变量,说明该变量不可以被改变; 2、修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const pointer); 常量指针 const int *p;指向的内存空间可以改,不能修改指向内存的值 指针常量 int *const p;指向的内存空间不能改,值可以改 既修饰指针又修饰常量 const int * const p; 3、修饰引用,指向常量的引用(reference to const),用于形参类
const关键字作用
Jeff_m的博客
08-10 791
在C语言中: 1、修饰变量 const修饰的变量不可以改变,为只读。(C语言中,可以用强制类型转换,通过指针来改变变量的值)    2、修饰指针 如果const位于*的右侧,(eg. char *const p),const就是修饰指针本身,即指针本身是常量; 如果const位于*的左侧,(eg. char const *p),则const就是用来修饰指针所指向的变量,即指针指向为常量。
const关键字作用
希望我的博客,能帮上你解决学习中工作中所遇到的问题
02-11 4065
(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了; (2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const; (3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值; (4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量; (5)对于类的成员函数,有时候必须指定其返回值为const类型,以
const的一些作用,不全
rendaitong的博客
03-05 301
const在*的左边,则指针指向的变量的值不可直接通过指针改变,但可以通过其他方法改变。 const在*的右边,则指针的指向不可变,简记左定值,右定向。 const char*const p 第一个const表示p指向的内容不能修改,第二个const表示p不能指向其他变量 .char*const p: const修饰p本身,表示p的指向不能修改,p指向的空间中内容可以修改 char const *p :const修饰*p,表示p指向的内容不能修改 const char*p :const修饰*p,表
关键字Const在指针中的用法解析及应用场景
Burrier_roust的博客
10-26 2208
首先,我们先来认识一下什么是const. const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。 我们在使用编译器编写代码时都占用了编译器的空间,而这个空间又被划分为了数据空间和代码空间。代码空间我们常常使用函数名来标识,但我们该如何去标识数据空间呢? C语言中就提出
写文章

热门文章

  • 并查集 59296
  • 卷积神经网络之padding操作 27370
  • 卷积步长 10270
  • const关键字的作用及应用场景 3311
  • 卷积神经网络 1195

分类专栏

  • LeetCode 7篇
  • C++ 1篇
  • 机器学习 11篇

最新评论

  • 并查集

    小小_飞侠: 不亏是大佬

  • 并查集

    clmm_: 大佬,只看你的文章把并查集学透了,十分感谢!!!

  • 并查集

    snh畔: 一看就懂,厉害

  • 并查集

    LD1219123: 博人不服

  • 并查集

    while_black: 太厉害了,顶不住啊

最新文章

  • 01-为您的应用程序选择正确的接口(Clang10文档)
  • 338. 比特位计数
  • 232. 用栈实现队列
2021年16篇
2020年2篇
2019年3篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家广州美陈玻璃钢动物雕塑宿州户外玻璃钢雕塑定制湖州玻璃钢动物雕塑璧山玻璃钢花盆花器福建常用商场美陈供应商信丰玻璃钢雕塑河北季节性商场美陈报价玻璃钢猫咪造型雕塑运城玻璃钢人物雕塑小品公司七夕商场美陈图安庆玻璃钢园林景观雕塑南通玻璃钢佛像雕塑水景玻璃钢人物雕塑制作临湘玻璃钢花盆花器玻璃钢雕塑施工供应商北京展会玻璃钢雕塑工厂湘西玻璃钢商场美陈合肥个性化玻璃钢雕塑销售电话三明玻璃钢仿铜雕塑厂家安宁玻璃钢雕塑造型厂家哪里有曲靖玻璃钢雕塑厂家济宁小区玻璃钢雕塑生产厂家马鞍山动物玻璃钢雕塑价格昌邑玻璃钢浮雕人物山水雕塑焦作室内玻璃钢仿铜雕塑公司玻璃钢花盆种花好吗烟台玻璃钢仿真水果雕塑赣州人物玻璃钢雕塑多少钱普陀玻璃钢雕塑佛山玻璃钢雕塑工艺香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化