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

  • 拼多多改地址怎么改(拼多多改地址怎么拒签)

    拼多多改地址怎么改(拼多多改地址怎么拒签)

  • 红魔6spro怎么插卡(红魔6pro有几个充电孔)

    红魔6spro怎么插卡(红魔6pro有几个充电孔)

  • k30pro出厂自带贴膜的吗(k30pro出厂自带贴膜)

    k30pro出厂自带贴膜的吗(k30pro出厂自带贴膜)

  • 怎么进快手小店(怎么进去快手小店)

    怎么进快手小店(怎么进去快手小店)

  • 开网店要哪些条件(开网店要哪些条件和要求)

    开网店要哪些条件(开网店要哪些条件和要求)

  • 抖音怎么发长视频10分钟(抖音怎么发长视频2分钟以上的苹果手机)

    抖音怎么发长视频10分钟(抖音怎么发长视频2分钟以上的苹果手机)

  • 钉钉直播分屏会有记录吗

    钉钉直播分屏会有记录吗

  • 电脑可以下载剪映吗(电脑下载剪映打不开怎么办)

    电脑可以下载剪映吗(电脑下载剪映打不开怎么办)

  • qq群禁言怎么设置(qq群禁言怎么设置退群之后不能加群)

    qq群禁言怎么设置(qq群禁言怎么设置退群之后不能加群)

  • 出厂设置是什么意思(手机恢复出厂设置是什么)

    出厂设置是什么意思(手机恢复出厂设置是什么)

  • 来源qq号查找什么意思(来源是qq号查找怎么做到的)

    来源qq号查找什么意思(来源是qq号查找怎么做到的)

  • 大数据具有四大特征(大数据具有四大特点)

    大数据具有四大特征(大数据具有四大特点)

  • 提示正在通话中是怎么回事(正在通话中...)

    提示正在通话中是怎么回事(正在通话中...)

  • 如何快速压缩ppt大小(如何快速压缩视频)

    如何快速压缩ppt大小(如何快速压缩视频)

  • 一加7T是什么屏幕(一加7是什么屏幕)

    一加7T是什么屏幕(一加7是什么屏幕)

  • vivox20微信怎么开美颜(vivox20微信怎么分屏)

    vivox20微信怎么开美颜(vivox20微信怎么分屏)

  • 拼多多怎么扫二维码买东西(拼多多怎么扫二维码取快递)

    拼多多怎么扫二维码买东西(拼多多怎么扫二维码取快递)

  • 京东怎么把待评价删掉(如何把京东待评价里面的东西删除)

    京东怎么把待评价删掉(如何把京东待评价里面的东西删除)

  • 小米全球上网原理(小米全球上网是干什么的)

    小米全球上网原理(小米全球上网是干什么的)

  • 全民k歌如何认证主唱(全民K歌如何认证QQ音乐人)

    全民k歌如何认证主唱(全民K歌如何认证QQ音乐人)

  • 苹果启用wapi是什么意思(苹果手机启用wapi是什么)

    苹果启用wapi是什么意思(苹果手机启用wapi是什么)

  • 手机上如何使用金山文档(手机上如何使用word文档)

    手机上如何使用金山文档(手机上如何使用word文档)

  • vue保存草稿在哪里(vue的草稿在哪)

    vue保存草稿在哪里(vue的草稿在哪)

  • 操作系统的设备管理(运行网络操作系统的设备)

    操作系统的设备管理(运行网络操作系统的设备)

  • dedecms自动生成RSS和网站地图(dedecms采集怎么用)

    dedecms自动生成RSS和网站地图(dedecms采集怎么用)

  • 电子税务局如何删除办税人员
  • 停车场自助缴费系统
  • 固定资产原值包含进项税吗
  • 飞机票的快递费多少钱
  • 2019城建税减半征收优惠政策解读
  • 房地产企业回迁安置房税收规定
  • 手工帐怎么登记
  • 科技成果转化奖励
  • 企业筹办期间,发生亏损,应该计算为亏损年度
  • 董事会会费计入哪里
  • 餐费适用税率
  • 资本公积账务重组
  • 新建厂房购入材料会计分录
  • 反结账是什么意思怎么取消
  • 银行哪些进项税不用抵扣
  • 外贸公司进出口权办理流程
  • redhat5.6安装
  • 中秋福利发放现金文案怎么写
  • 电脑默认网关不可以用
  • PHP:pg_lo_export()的用法_PostgreSQL函数
  • php imagick
  • CodeIgniter扩展核心类实例详解
  • 银行提取现金会查征信吗
  • php7 数组
  • vue写的购物车详细步骤
  • html入门基础
  • three.js 入门
  • cdr快捷键命令大全
  • mtd命令
  • php call stack
  • tr命令详解
  • 未分配利润是负数是亏损吗
  • 企业小微企业贷逾期起诉法人房子会被拍卖吗?
  • 现金流量表企业所得税
  • 帝国cms如何使用
  • 哪些情况不能开专用发票
  • 专项储备计提和使用理解
  • 小规模未达起征点申报表怎么填
  • 交易性金融资产的入账价值
  • 简易计税怎么算增值税
  • 公益事业捐赠有哪些税收优惠政策
  • 公司买车可以抵扣企业所得税吗
  • 什么是保函保证金
  • 开办费计入什么科盿
  • 农业种植账务处理方法
  • 营改增租金收入税率
  • 会计中制造费用包括哪些内容
  • 以前年度销售退回买方账务处理
  • 结转增值税的账务处理一定要通过转出未交增值税吗
  • 现金支票存根联丢失怎么办
  • 企业录用失业人员补贴
  • 企业购买的原材料确认为资产,这属于会计确认的范畴
  • 工资可以当月发放当月计提吗
  • 测试账户收入怎么处理
  • 什么服务费发票可以免税的
  • 保险公司的返点能要吗
  • 待处理财产损益借贷方向
  • 新成立的公司需要年报吗
  • sql server数据库正在恢复
  • mysql中的limit用法有哪些(推荐)
  • mysql连接问题
  • StatusClient.exe - StatusClient是什么进程 有什么作用
  • 虚拟机安装win7一直卡在完成安装
  • linux安装与基本命令
  • 防止 避免
  • opengl示例
  • script_tool_for_linux.bash: Linux 环境下的 hosts 一键部署脚本
  • unity3d的
  • python算法具有哪五个性质
  • matlab中sort函数的作用
  • macbookair安卓系统怎么切换到苹果
  • jquery.js插件
  • 郑州税务局电话客服电话
  • 房产契税退税在哪里办理
  • 北京东城区社保电话
  • 网上如何申领电瓶车牌照
  • 个人所得税超过12万能退税吗
  • 2022年中国烟草营收
  • 地税收社保
  • 南通房屋登记系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设