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

  • 3个效果还不错的引流小技巧(效果好一些)

    3个效果还不错的引流小技巧(效果好一些)

  • 博客推广营销的8大技巧(博客营销推广的成功案例)

    博客推广营销的8大技巧(博客营销推广的成功案例)

  • 小米mix4怎么关闭快速充电(小米mix4怎么关闭应用)

    小米mix4怎么关闭快速充电(小米mix4怎么关闭应用)

  • soul名字可以改几次(soul改名字有次数限制吗)

    soul名字可以改几次(soul改名字有次数限制吗)

  • 为什么手机搜不到mp3蓝牙(为什么手机搜不到wifi,但别人能连)

    为什么手机搜不到mp3蓝牙(为什么手机搜不到wifi,但别人能连)

  • excel冻结窗格怎么设置前三行和列(excel冻结窗格怎么冻结行和列)

    excel冻结窗格怎么设置前三行和列(excel冻结窗格怎么冻结行和列)

  • 手机里压缩包可以删除吗(压缩包在手机上可以打开吗)

    手机里压缩包可以删除吗(压缩包在手机上可以打开吗)

  • 苹果x有120帧吗(苹果x是多少帧数)

    苹果x有120帧吗(苹果x是多少帧数)

  • qq空间隐身访问了对方看得到吗(qq空间隐身访问会留下浏览量吗)

    qq空间隐身访问了对方看得到吗(qq空间隐身访问会留下浏览量吗)

  • 33w快充多久可以充满(33w快充多久可以充满4500毫安)

    33w快充多久可以充满(33w快充多久可以充满4500毫安)

  • 苹果手机怎么在照片上写字(苹果手机怎么在锁屏换壁纸)

    苹果手机怎么在照片上写字(苹果手机怎么在锁屏换壁纸)

  • iphonex港版和国行区别(苹果x港版和国行)

    iphonex港版和国行区别(苹果x港版和国行)

  • flv怎么播放(flv怎么用windows播放)

    flv怎么播放(flv怎么用windows播放)

  • 通讯卫星是同步卫星吗(通迅卫星也称同步卫星,同步卫星若成为静止卫星)

    通讯卫星是同步卫星吗(通迅卫星也称同步卫星,同步卫星若成为静止卫星)

  • reno录屏声音怎么打开(reno录屏没有声音)

    reno录屏声音怎么打开(reno录屏没有声音)

  • 拼单是每个人都有货吗(拼单每个人都能得到商品吗?)

    拼单是每个人都有货吗(拼单每个人都能得到商品吗?)

  • iphone11搭载什么芯片(iphone11搭载什么基带)

    iphone11搭载什么芯片(iphone11搭载什么基带)

  • myzone是冰箱什么意思(冰箱上的myzone是什么)

    myzone是冰箱什么意思(冰箱上的myzone是什么)

  • vivo手机图标怎么改大小(vivo手机图标怎么变成长方形)

    vivo手机图标怎么改大小(vivo手机图标怎么变成长方形)

  • 闲聊版本怎么更新(闲聊改版了吗)

    闲聊版本怎么更新(闲聊改版了吗)

  • 高尔夫app开发怎么做(高尔夫的app)

    高尔夫app开发怎么做(高尔夫的app)

  • 如何解决浏览器Adobe Flash Player不是最新版本问题?(如何解决浏览器禁止访问)

    如何解决浏览器Adobe Flash Player不是最新版本问题?(如何解决浏览器禁止访问)

  • 前端开发是做什么的?工作职责(前端开发做什么副业)

    前端开发是做什么的?工作职责(前端开发做什么副业)

  • 向境外企业支付利息代扣代缴
  • 外部奖励与内部奖励
  • 期末留抵增值税在哪个科目
  • 公司给员工发放福利的说辞
  • 房地产企业预收款预缴增值税
  • 负债类科目有借方余额吗
  • 进料边角料内销作进口报关单时为何要在备注栏备注活期
  • 利润表中利润总额是什么
  • 商业企业向供货方收取的进场费,不可以开具增值税发票
  • 公司收到转账支票怎么盖章
  • 从公司账户转给个人账户取出来发给员工做过节费
  • 预缴增值税税款网上申报操作流程
  • 小规模纳税人查账征收所得税税率
  • 买酒 专票
  • 工伤保险费发票
  • 租给公司仓库要发票怎么办
  • 3%征收率的应税服务
  • 企业购房房产税土地税补缴
  • 企业合并资本公积转留存收益
  • 增值税影不影响企业利润
  • 怎么操作win10系统
  • 非经营性单位支出费用是什么
  • 食堂充值管理制度
  • win11系统关闭防火墙怎么关
  • pos机未入账怎么回事
  • PHP:http_build_query()的用法_url函数
  • SetPoint.exe - SetPoint是什么进程 有什么用
  • 土地承包费收入怎么做账务处理
  • 矿产资源补偿费是什么
  • 预支员工报销费用会计科目
  • 基于php技术
  • php实现文件的下载
  • 投资收益属于营业外收入吗
  • php fopen()
  • vgremove命令
  • 滴滴打车老板起源故事
  • 维修费的会计分录怎么写
  • 发票跨月发现开错该怎么办?
  • 个税申报报的是已离职的员工员工投诉
  • sql将一列数据变成一行显示
  • 其他应收款增加现金流量表怎么填
  • 存货成本核算方法的多久变更
  • 房产互换如何交税费
  • 企业利润表表怎么看
  • 定期定额怎么申报个人所得税
  • 上年期末留底税额怎么算
  • 原材料不足
  • 固定资产折旧年限
  • 公司注销后会计档案可以销毁吗
  • 报销招待费是什么意思
  • 年度汇算清缴要补税怎么办
  • 天猫佣金会返还吗
  • 美容行业如何做好管理工作
  • 从一个公司到另一个公司叫什么
  • 企业接受捐赠的固定资产,应增加营业外收入
  • 旅游业餐饮业
  • 安装sqlserver2000 IP地址出错怎样修改
  • android内存优化面试
  • opengl transform
  • jquery怎么获取
  • js获取页面元素的方法
  • 详解九章算法
  • 肉鸡下的鸡蛋可以吃吗
  • node chain
  • cmd命令怎么重启
  • javascript内置对象window
  • python爬虫入门教程
  • javascript中变量的命名规则有哪些?
  • android 属性动画改变view大小
  • js初级教程
  • 最简单手电筒
  • javascript对象定义
  • 60后歌手有哪些
  • js所有知识点
  • 车票进项税怎么认证
  • 河南税务机关
  • 北京朝阳区地税局地址电话
  • 同比减少怎么计算出来
  • 正在办退休社区盖章到了那一步
  • 土地增值税分期清算条件?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设