位置: 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怎么存储数据)

  • 怎样做QQ群推广才会达到效果?(简述qq群推广的方法)

    怎样做QQ群推广才会达到效果?(简述qq群推广的方法)

  • 微信精选商品橱窗怎么开通(微信的精选商品橱窗怎么使用)

    微信精选商品橱窗怎么开通(微信的精选商品橱窗怎么使用)

  • 苹果手机密码键盘只显示一半(苹果手机密码键盘怎么按出来)

    苹果手机密码键盘只显示一半(苹果手机密码键盘怎么按出来)

  • qq二级密码是什么(qq二级密码有什么用处)

    qq二级密码是什么(qq二级密码有什么用处)

  • 三星s8+开不了机怎么办(三星s8开不了机了)

    三星s8+开不了机怎么办(三星s8开不了机了)

  • 华为荣耀录屏功能在哪呢(华为荣耀录屏功能在哪找)

    华为荣耀录屏功能在哪呢(华为荣耀录屏功能在哪找)

  • 华为手机提示音总乱响怎么办(华为手机提示音怎么调大小)

    华为手机提示音总乱响怎么办(华为手机提示音怎么调大小)

  • 抖音上的喜欢代表什么(抖音里的喜欢是点了赞的意思吗的)

    抖音上的喜欢代表什么(抖音里的喜欢是点了赞的意思吗的)

  • 荣耀30有nfc和红外吗(荣耀30是否带nfc)

    荣耀30有nfc和红外吗(荣耀30是否带nfc)

  • 小米手机图库在哪里(小米手机图库在哪个文件)

    小米手机图库在哪里(小米手机图库在哪个文件)

  • oppo有哪几款5g手机(oppo有哪些5g)

    oppo有哪几款5g手机(oppo有哪些5g)

  • 佳能相机怎么开机(佳能相机怎么开辅助线)

    佳能相机怎么开机(佳能相机怎么开辅助线)

  • iphone11来电不显示通讯录名字(苹果11来电不显示号码怎么办)

    iphone11来电不显示通讯录名字(苹果11来电不显示号码怎么办)

  • 该网站服务器出错了是什么意思(网站服务器出错了是怎么回事)

    该网站服务器出错了是什么意思(网站服务器出错了是怎么回事)

  • 网易云音乐访问别人主页有记录吗(网易云音乐访问记录从哪看)

    网易云音乐访问别人主页有记录吗(网易云音乐访问记录从哪看)

  • 主机里的风扇叫什么(主机里的风扇叫什么名字)

    主机里的风扇叫什么(主机里的风扇叫什么名字)

  • soul怎么看谁看过我(soul怎么看谁看过你)

    soul怎么看谁看过我(soul怎么看谁看过你)

  • iphonex辅助键怎么调出来(iponex辅助按钮)

    iphonex辅助键怎么调出来(iponex辅助按钮)

  • 多媒体数据最终以什么形式存在(多媒体数据最终来源于)

    多媒体数据最终以什么形式存在(多媒体数据最终来源于)

  • 苹果x手机墙纸怎么缩小(苹果X手机墙纸在哪设置)

    苹果x手机墙纸怎么缩小(苹果X手机墙纸在哪设置)

  • 如何把qq名片头像居中(如何把qq名片头像换掉)

    如何把qq名片头像居中(如何把qq名片头像换掉)

  • 换了手机号花呗怎么办(换了手机号花呗还能用吗)

    换了手机号花呗怎么办(换了手机号花呗还能用吗)

  • vps和云主机的区别(云主机跟vps)

    vps和云主机的区别(云主机跟vps)

  • Java 中九种 Map 的遍历方式,你一般用的是哪种呢?(java中map.entry)

    Java 中九种 Map 的遍历方式,你一般用的是哪种呢?(java中map.entry)

  • 一般纳税人开出的普票算销项税额吗
  • 现代服务印花税属于哪项
  • 员工借款业务流程
  • 开专用发票可以直接写加工费这个明细吗
  • 合并报表是按年还是按月
  • 国家电子产品投诉电话
  • 贷款受托支付可以给股东吗
  • 即将发生坏事的预兆
  • 小规模纳税人每季度报税清盘
  • 新政府会计制度衔接预算会计需做好的账目清理工作有
  • 房产税的原值是如何确定的
  • 客运站收到承运方开具增值税专用发票可否抵扣
  • 预借差旅费凭证填写
  • 企业取暖费怎么做会计分录
  • 主营业务成本的贷方可以是哪些科目
  • 生育津贴做账法会计准则
  • 金税盘费用到期
  • 采购商品产生的费用有哪些
  • 营改增后的税率
  • 一般企业可以开检测费吗
  • 工程项目预缴税金
  • 如何开启windows10云服务
  • 航空公司收取什么费
  • 应收票据冲转是什么科目
  • linux命令“ln file1 file2”的含义是
  • 个税代扣代缴手续费返还增值税税率
  • 跨年度费用应如何计算
  • linux中cut命令详解
  • 在途物资属于什么科目借贷方向
  • 职工医疗保险补交6万与交居民每交300哪个合算?
  • wind10待机唤醒
  • wordpress采集教程
  • 印度活根桥 (© dhritipurna/Shutterstock)
  • 预付装修款账务处理
  • 公众号 企业
  • 销售不动产税目计缴增值税有哪些
  • bat开源项目
  • php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
  • 先发货再开票
  • mfc中format
  • mkpart命令
  • 为什么没缴税
  • 股东投资款超过注册资金的案例
  • 本期应补退税额和期末未缴税额
  • 织梦如何使用
  • 买汽车计算公式
  • 增值税出口免税不退税
  • sql server 2008怎么使用sql语句
  • sqlserver2005 master与msdb数据库备份恢复过程
  • 递延收益为什么属于负债
  • 土地使用权的使用是什么意思
  • 企业长期股权投资增加说明什么
  • 怎样计提税金及附加
  • 经营活动的现金流量占全部现金流量的比重越大
  • 预付卡销售成品油会计分录
  • 零余额账户银行回单
  • 公司支付给实习生的报酬如何税前扣除?
  • 农民工工资从专户里发放工资需要甲方盖章吗
  • 管理不善造成的存货盘亏损失计入什么科目
  • 公司打款账号模板图片
  • 公司想自己开发票怎么申请
  • 营改增后计税依据
  • sql server数据库版本
  • 清除windows10登录密码
  • linux怎么安装iso
  • 使用windows管理无线
  • win10里的运行
  • 麒麟系统怎么执行命令
  • 计算机网络设计
  • 安卓开源好处
  • python迭代器iterator
  • javascript闭包详解
  • 关于javascript
  • linux中的shell命令
  • unity资源包管理器
  • 总结网络io模型的特点
  • 科技型中小企业认定有效期
  • 税务总局和各省税务机关
  • 电子税务局帐号不知道怎么找
  • 收到假发票,被公司辞退
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设