位置: IT常识 - 正文

c++常见关键字总结(c++32个关键字详解)

编辑:rootadmin
前言 ​本系列是对常见的重要c++关键字的备忘录,也许未注意到某些用法,但会不断完善。某些关键字不适合出现于此,在后面的篇章如分析类,STL,异常时会讲到。如有瑕疵,还请不吝赐教! const const的作用:被const修饰的值理论上不能改变,为只读语义,且因为创建后const对象无法改变,需 ... 前言

推荐整理分享c++常见关键字总结(c++32个关键字详解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:c++语言中的关键字,c++语言中的关键字,c++20 关键字,c++语言中常用的关键字含义,c ++关键字,c++语言中的关键字,c++常用关键字,c++关键字及其含义,内容如对您有帮助,希望把文章链接给更多的朋友!

​本系列是对常见的重要c++关键字的备忘录,也许未注意到某些用法,但会不断完善。某些关键字不适合出现于此,在后面的篇章如分析类,STL,异常时会讲到。如有瑕疵,还请不吝赐教!

const

const的作用:被const修饰的值理论上不能改变,为只读语义,且因为创建后const对象无法改变,需要在定义阶段必须为他赋初值,初值可以任意复杂的表达式,修饰的常量只能作用于当前模块

但const并非完全不能改变,在定义变量时加上volatile关键字,通过指针间接修改。这是因为加上volatile编译器不会进行优化,以下例子中*pt和a都是从堆栈也就是内存中取值;而不加上volatile,编译器将进行优化,节省访问内存的时间,输出a的值时将直接从符号表取出

在后面会提到volatile关键字,作用是告诉编译器不要对此句进行优化,每次都去内存取值

volatile const int a = 1;int* pt = (int*)(&a);*pt = 100;

const 可以定义编译期常量,也可以定义运⾏期常量

默认情况下,const对象仅在文件内有效,多个文件出现了同名的const对象,相当于在不同文件中分别定义了独立的对象

不能使用字面值初始化一个非常量引用.因为引用是变量的别名

int& a = 0;//错const int& b = 1;//对

指针常量(顶层const)表示指针本身是个常量,一旦指定了对象,便不可改变,且指针必须在定义时初始化

形式:

数据类型* const 指针 = 变量名

例子:

int a = 0;int b = 1;int* const pt = &a;pt = &b;//错*pt = 1;//对

常量指针(底层const)定义一个指针,该指针不可以修改其所指对象的值

c++常见关键字总结(c++32个关键字详解)

形式:

数据类型 const * 指针 = 变量名const 数据类型* 指针 = 变量名

例子:

int a = 0;const int* p1 = &a;int const* p1 = &a;*p1 = 10; //错a = 10; //对函数

​当形参为const时,实参可传入const类型,也可传入不为const类型,也就是说当用实参初始化形参时,顶层const会被忽略掉。不能改变形参的值

//重复定义函数void fcn( int i );void fcn( const int i ){ i == 2;//错}int a = 0;const int b = 1;fcn( a );//对fcn( b );//对

​一个拥有顶层const的形参无法和没有顶层的const的形参区分开,因此当我们传入区别只是是否为const类型的对象时,在函数中是等价的。但是如果形参是引用或指针,此时const为底层,因此可以区别

例子:

//顶层const,两个函数等价int func1( A );int func1( const A );//底层const,两个函数重载int func1( A* );int func1( const A* );类

​const类对象不可以调用非const成员函数,而普通类可以调用const成员函数

为什么不可以呢?因为this指针是指针常量但并不是常量指针,其并不具备底层const,也就是它的含义是 A* const this,如果成员函数改变了类对象的成员而类对象是const,这是不合理的

const A a;//func为a中的非const成员函数a.func();//错

​在类的成员函数参数本来带有一个隐藏的this指针,这个指针属于指针常量,若再在参数后面跟一个const,这个指针不仅是指针常量,还是常量指针,若函数并不改变this所指对象,我们应尽可能将this设置为常量指针

类型:const Class* const this

例子:

class A{public: int intFunc() const { return i1 };private: int i = 0;}

​类的成员函数返回*this,返回类型为&类对象并且成员函数为const类型,需要注意,我不可以用这样的成员函数的返回值对象来调用其他要改变类对象的值的函数,因为此时成员函数的返回值为常量对象

例子:

class A{public: A& set( char c ) { //改变类对象的成员的值 return *this } A& display() const { //展示类对象的成员 return *this; }}//调用A a;a.display().set('c');//错,因为此时display返回的常量对象,而set会修改对象的成员的值

const成员函数有两个作用:

为提升程序的健壮性,只要这个成员函数不会让类对象改变,我们就要将其设计为const成员函数为了配合const类对象

​成员函数是否为const,是两个函数,也就是其可以重载。因为带const版本的主要是提供给const类对象调用

//对。const成员函数可以重载void func1() const;void func1();//调用非const版本A a;a.func1();const A ca;ca.func1(); //调用const版本

​若const成员函数返回类型是引用类型,则必须是const引用

class A{public: int& func1() const { return val; }//错,这里this指针为常量指针,而返回值非常量private: int val = 1;}

​构造函数不可以

本文链接地址:https://www.jiuchutong.com/zhishi/310183.html 转载请保留说明!

上一篇:python中如何基于numpy创建矩阵(基于python语言)

下一篇:Js如何存储执行上下文(js怎么存储数据)

  • 苹果手机怎么开启手机查找功能(苹果手机怎么开闪光灯)

    苹果手机怎么开启手机查找功能(苹果手机怎么开闪光灯)

  • 移动的魔百盒可以换地方用吗(移动的魔百盒可以投屏吗?)

    移动的魔百盒可以换地方用吗(移动的魔百盒可以投屏吗?)

  • 怎么解除微信绑定的身份证(怎么解除微信绑定的银行卡)

    怎么解除微信绑定的身份证(怎么解除微信绑定的银行卡)

  • thinkpad适合什么人用(thinkpad推荐哪一款)

    thinkpad适合什么人用(thinkpad推荐哪一款)

  • 商品扫码扫不出来是假的吗(商品扫码扫不出二维码)

    商品扫码扫不出来是假的吗(商品扫码扫不出二维码)

  • 微信有关联功能吗(微信有关联功能怎么解除)

    微信有关联功能吗(微信有关联功能怎么解除)

  • 公众号投诉对方知道吗(公众号投诉对方能收到信息吗)

    公众号投诉对方知道吗(公众号投诉对方能收到信息吗)

  • 苹果8p原彩显示有什么用(苹果8p原彩显示打开好还是关闭好)

    苹果8p原彩显示有什么用(苹果8p原彩显示打开好还是关闭好)

  • 如何将视频保存到手机相册(如何将视频保存到百度网盘)

    如何将视频保存到手机相册(如何将视频保存到百度网盘)

  • i39100核显相当于什么显卡(i39100核显相当于什么独显)

    i39100核显相当于什么显卡(i39100核显相当于什么独显)

  • 拼多多下架的商品可以退货吗(拼多多下架的商品怎么上架)

    拼多多下架的商品可以退货吗(拼多多下架的商品怎么上架)

  • mate30pro怎么插双卡(华为mate30pro如何插双卡)

    mate30pro怎么插双卡(华为mate30pro如何插双卡)

  • 芯片的作用是什么(芯片的主要作用)

    芯片的作用是什么(芯片的主要作用)

  • ipad air2支持插卡吗(ipadair2可以插卡上网吗)

    ipad air2支持插卡吗(ipadair2可以插卡上网吗)

  • 封装是一种什么技术(什么是封装,封装的意义是什么)

    封装是一种什么技术(什么是封装,封装的意义是什么)

  • 怎么修改网站内容(怎么修改网站内容刷新跳过)

    怎么修改网站内容(怎么修改网站内容刷新跳过)

  • 华为mate30的插卡的地方(华为mate30的插卡口在哪)

    华为mate30的插卡的地方(华为mate30的插卡口在哪)

  • 怎样把电话号码移到新手机上(怎样把电话号码导入卡里)

    怎样把电话号码移到新手机上(怎样把电话号码导入卡里)

  • hd高清通话的坏处(hd高清通话额外收费吗)

    hd高清通话的坏处(hd高清通话额外收费吗)

  • 快手怎么看好友关注了谁(快手怎么看好友在不在线状态)

    快手怎么看好友关注了谁(快手怎么看好友在不在线状态)

  • 微信怎么恢复旧版本(微信怎么恢复旧照片)

    微信怎么恢复旧版本(微信怎么恢复旧照片)

  • 芒果tv怎样关闭自动续费(芒果TV怎样关闭会员)

    芒果tv怎样关闭自动续费(芒果TV怎样关闭会员)

  • 数据类型转换(数据类型转换分为哪两种)

    数据类型转换(数据类型转换分为哪两种)

  • ahfp.exe是什么进程 ahfp进程有哪些作用(isahelp是什么进程)

    ahfp.exe是什么进程 ahfp进程有哪些作用(isahelp是什么进程)

  • vue系列(三)——手把手教你搭建一个vue3管理后台基础模板(vue系列教程)

    vue系列(三)——手把手教你搭建一个vue3管理后台基础模板(vue系列教程)

  • 关联方交易金额含税吗
  • 增值税发票管理办法及细则
  • 盈利能力也可以反映短期偿债能力
  • 长期借款到期一年怎么算
  • 公司车转个人名下要交多少税
  • 增值税冲红附加税费可以退吗
  • 企业有利润要交什么税
  • 房租违约金收入怎么做账
  • 生育津贴需要连续缴纳社保满一年吗
  • 土地使用权出让金多少钱一平米
  • 税费返还如何处理
  • 哪些依据属于会计凭证
  • 汇兑损益需要缴税吗
  • 清包工一般纳税人简易计税能开专票
  • 购买虚开增票怎么处理?
  • 没收履约保证金交增值税吗
  • 债券分期还本利息怎么算
  • 高新研发费的账务处理怎么做?
  • 退税后钱到哪里
  • 居委会有没有税收政策
  • 税盘显示已过开票截止日期
  • 合同银行账户与开票信息不一致会计如何处理
  • 企业个税网上申报时间
  • mac文本文件
  • 付款给对方怎么做分录
  • windows没有搜索
  • windows的记事本的扩展名
  • php面向对象编程
  • 事业单位会计专业知识考什么
  • antd upload组件
  • 延期收款利息如何缴税
  • php ioc
  • uniapp开发微信小程序源代码
  • svc语法
  • 已提足折旧固定资产改建支出 所得税怎么计算
  • php curl_setopt
  • 采购货未到收到发票
  • 对公账户的资金怎么转出
  • phpcms模板下载
  • 资本性支出与资本性支出(基本建设)的区别
  • 应收应付款项
  • 车间购买的设备怎么记账
  • 企业累计预扣个税是什么
  • 增值税一般纳税人是什么意思
  • 人力资本收入
  • 小规模未达起征点销售额是多少
  • 接受捐赠的增值税可以抵扣吗
  • 存货增加使经营活动现金净流量减少该怎么办
  • 企业分期收款销售商品,即商品已经交付
  • 日常生活中各种形式的能量的转化
  • 购置办公大楼,会计处理
  • 出口货物质量不足怎么办
  • 电子税务局财务报表在哪里查询
  • 个人账户发工资扣税吗
  • 存货周转率多少属正常范围
  • iis设置mime
  • windows xp和windows 2000
  • wibdows任务管理器
  • 系统设置技巧有哪些
  • windowsxp怎么查看用户名密码
  • centos32
  • linux双网卡绑定原理
  • WIN10系统怎么改成泰语
  • win8开不了机怎么系统还原
  • linux rpm包怎么安装
  • android自定义属性详解
  • Linux查看所有用户和密码
  • unity控制相机旋转
  • fragment切换保存状态
  • centos6.9查看网卡状态
  • unity 2d 3d混合
  • pythonipo模型
  • javascript概述
  • android下的单元测试要配置以下说法不正确的是
  • javascript缓存
  • scroll-view组件用于实现
  • 如何查询车辆购买的保险
  • 厦门象屿正式员工招聘
  • 河南省税务总局网站官网
  • 江苏地税每月社保多少钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设