位置: 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人脸识别是别人的脸怎么更换)

  • 魅族17pro是曲面屏手机吗(魅族17是曲面吗)

    魅族17pro是曲面屏手机吗(魅族17是曲面吗)

  • 微信朋友圈评论如何发表情包(微信朋友圈评论只有共同好友才能看到吗)

    微信朋友圈评论如何发表情包(微信朋友圈评论只有共同好友才能看到吗)

  • 抖音粉丝不到1000怎么开通商品橱窗(抖音粉丝不到1000怎么播游戏)

    抖音粉丝不到1000怎么开通商品橱窗(抖音粉丝不到1000怎么播游戏)

  • 抖音怎么链接淘宝店铺(抖音怎么连接淘宝链接)

    抖音怎么链接淘宝店铺(抖音怎么连接淘宝链接)

  • 华为mate30防抖功能怎么设置(华为mate30 防抖)

    华为mate30防抖功能怎么设置(华为mate30 防抖)

  • 文件传输助手安全吗(文件传输助手安卓和苹果)

    文件传输助手安全吗(文件传输助手安卓和苹果)

  • 拼多多如何筛选发货地(拼多多如何筛选发货地址)

    拼多多如何筛选发货地(拼多多如何筛选发货地址)

  • 注销qq号会连邮箱一起注销吗(注销qq号会注销邮箱吗)

    注销qq号会连邮箱一起注销吗(注销qq号会注销邮箱吗)

  • 对方挂断电话有什么提示(对方挂断电话我电话还在响)

    对方挂断电话有什么提示(对方挂断电话我电话还在响)

  • 分辨率1920x1080什么意思(分辨率1920x1080什么手机)

    分辨率1920x1080什么意思(分辨率1920x1080什么手机)

  • 笔记本耗电快正常吗(笔记本耗电太快正常吗)

    笔记本耗电快正常吗(笔记本耗电太快正常吗)

  • 闲聊可以提现为什么到不了账(闲聊提现24小时可以进账吗)

    闲聊可以提现为什么到不了账(闲聊提现24小时可以进账吗)

  • apple watch 5防水吗(applewatch series 5防水)

    apple watch 5防水吗(applewatch series 5防水)

  • 爱奇艺为什么下载不了(爱奇艺为什么下载了还需要会员)

    爱奇艺为什么下载不了(爱奇艺为什么下载了还需要会员)

  • 手机为什么会停机(手机为什么会停机打电话对方停机怎么回事)

    手机为什么会停机(手机为什么会停机打电话对方停机怎么回事)

  • word文档怎么打印大字(word文档怎么打出分数形式)

    word文档怎么打印大字(word文档怎么打出分数形式)

  • 荣耀手机的文件在哪里(荣耀手机的文件管理在哪里找)

    荣耀手机的文件在哪里(荣耀手机的文件管理在哪里找)

  • 钉钉在哪写入职信息(钉钉填入职信息)

    钉钉在哪写入职信息(钉钉填入职信息)

  • 笔记本可以加几个内存条(笔记本可以加几张内存条)

    笔记本可以加几个内存条(笔记本可以加几张内存条)

  • 淘宝无需物流是什么意思(淘宝店家无需物流)

    淘宝无需物流是什么意思(淘宝店家无需物流)

  • solo3防水吗(solo3进水了怎么办)

    solo3防水吗(solo3进水了怎么办)

  • apple watch series4怎么调整屏幕亮度

    apple watch series4怎么调整屏幕亮度

  • 全民k歌怎么同时合唱(全民K歌怎么同步账号)

    全民k歌怎么同时合唱(全民K歌怎么同步账号)

  • uniapp中app真机模拟以及小程序编译后css样式异常失效问题原因及解决方案(uniapp怎么运行到手机模拟器)

    uniapp中app真机模拟以及小程序编译后css样式异常失效问题原因及解决方案(uniapp怎么运行到手机模拟器)

  • 开诊所会计如何做账
  • 应税销售额是指
  • 主营业务成本借方表示什么意思
  • 企业所得税季初不能是0
  • 资产负债表的固定资产怎么计算
  • 出口销售收入要交增值税吗
  • 工程产值是怎么计算的
  • 发票上的金额是什么字体
  • 机耕道属于水利还是土地整治
  • 不动产服务具体有哪些
  • 小企业准则适用于什么企业
  • 投资性房地产账面价值大于公允价值计入什么
  • 进账多于销项怎样报税
  • 利息收入缴纳什么税
  • 建筑业营改增前后区别
  • 合并财务报表内部交易对净利润影响
  • 基金会计核算的核算主体是
  • 股票卖出印花税费率
  • 新公司核税需要什么资料
  • 如何从百旺开票系统中导出开票明细
  • 稳岗补贴发放给职工需要交个税吗?
  • 农产品加工业数据
  • 应税行为扣除额怎么填
  • 公司招待客户买的水果怎么入账
  • 2021通行费抵扣税率
  • 公允价值变动增加在借方还是贷方
  • 航天信息服务费280元会计处理
  • 软件进项税额分摊方式
  • 福利费开成增值税专用发票怎么办
  • 当月凭证做完怎么结转?
  • 盈余公积转增实收资本要交税吗
  • 花语大全各种花的花语花树
  • coms恢复默认设置
  • redhat5.6安装
  • php快递查询系统
  • 跨年销货退回账务处理
  • 期权能套现吗
  • 库拉索的死
  • 目前超频最高几ghz
  • 高德地图海量点图层刷新
  • 哪些属于政府补贴
  • framework core
  • laravel实现登录注册
  • php 动态执行代码
  • d3.js下载
  • redis zset源码
  • 一文搞懂兰州简史
  • 基建拨款会计分录
  • mysqli
  • 现金日记账一般采用什么格式
  • 所得税汇算清缴账务处理
  • 小规模企业免税收入会计分录
  • 增值税期末留抵退税
  • 工程款多付了如何追回
  • 个人如何缴纳公积金和社保费用
  • 其他收益算不算营业利润
  • 软件企业技术开发增值税税率
  • 个体户员工要签劳动合同吗
  • 招待费发票怎么做分录
  • 待摊费用会计处理
  • 分析企业盈余状况
  • 食品生产企业成本怎么核算
  • 加油站如何开票
  • macos怎么操作
  • win8固态硬盘
  • 系统引导程序出错了如何修复
  • ipguard关闭进程
  • win7win8.1win10哪个好
  • linux服务器的mac地址怎么查
  • cocos2dx4.0教程
  • 如何用jquery
  • 如何用jquery
  • stick function
  • jQuery Validation PlugIn的使用方法详解
  • 置顶是怎么弄的
  • js变量作用域
  • androidobb
  • 税收预测的内容
  • 曲靖市税务局领导班子
  • 进项税额包括哪些项目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设