一文弄懂c++ 关键字const

2022-12-31 0 470

写在后面

看到 c++ 的URL const,他们的脑海中里能想不到什么呢?

都到 2020 年了,不能真没人只晓得 const 润色自变量吧,不能吧,不能吧!!!

总之,只晓得那个微观也说实话,这首诗会率领大家切身感受一下URL const,以后在复试的时候也能给辩手吹无赖逼了。

主轴归纳

const 除润色自变量外,更重要的应用领域是润色表达式,放到表达式相同的边线起著的作用也相同哟。接下去该文将以下列三部分进行:

const 润色表达式参数const 润色表达式codiceconst 润色 this 操作方式符

const 润色表达式参数

int getVal(int arg,const Sale_Item &item);

Sale_Item 是两个使用者自订类,Sale_Item &item 表示 Sale_Item 以提及的形式建立了两个第一类。

这儿可能没人就有疑点了。为何要用提及的形式呢?平时他们并非直接建立两个第一类就完了吗?就像上面此种。

Sale_Item item;

他们平时在 main 表达式里头建立第一类的确是此种,但与这儿是有区别的。

main 表达式里头一般来说构筑第一类就一次,不能数次重复构筑。但表达式是会被数次初始化的。假如写出下列此种,

int getVal(int arg,Sale_Item item);

那么每天初始化一次表达式要是构筑两个第一类,每天单厢造成两个临时性第一类,临时性第一类的内部结构、复本和析构都很光是,此种是非常影响工作效率的。

而提及传达并非值传达,不能牵涉复本此种操作方式,就像两个小东西贴上相同的条码,虽然根据条码有相同的用法,但总之是一样小东西。因此也不能造成临时性第一类。但此时有两个难题,就是假如我更动了两个提及第一类,那并非如前所述,全数都改了?

说的要说,为了防止此种情况的发生,他们就使用了 const 来润色,确保了那个提及第一类是不容修正的,从而化解了那个难题,因此就有了一开始的惠亨街标识符。

但这就结束了吗?too young too simple。。。

还是架不住好学的你们啊!╮(﹀_﹀)╭没人就来问了,既然提及这么牛逼,那岂并非。。。

可以此种?

int getVal(const int &arg,const Sale_Item &item);

或者此种?

int getVal(const int arg,const Sale_Item &item);

虽然你们很好学,但很遗憾地告诉你们,此种的写法是完全没必要的。

首先,对于 int 这些内置数据类型,根本就不存在类的内部结构和析构的过程,复制的工作效率与加提及相差无几,而且提及还要考虑它的风险。此种做有些画蛇添足。

其次,表达式会造成临时性变量来复制 int 等内置数据类型参数,参数无需进行保护,也就不用 const 润色了。

const 润色表达式codice

const char* getID();

操作方式符返回加 const 代表表达式codice(操作方式符)不能被修正。并且该codice只能赋值给 const 润色的同类型操作方式符。如

const char* id = getID();

总之也不用在内置数据类型返回时加 const,如上面的是没必要的。

const int getNum();

理由同上,表达式codice会复制到外部的临时性存储空间内。

总之,只要记住 const 是起著保护数据作用的,而复制操作方式本身就确保了数据的安全性,因此没必要多此一举。返回提及可以加 const 为自变量提及。如下

const Item &getVal();

const 润色 this 操作方式符

this 操作方式符本身是类成员表达式的两个隐性参数,本来应该在『const 润色表达式参数』里提及,但由于比较重要,因此只能在这儿给你们开个小灶。

言归正传,以前肯定见过如下标识符。

Sale_Item() const;

此种标识符为何把 const 写在外面呢?难道是响应时代的召唤,也开始特立独行起来?

其实这行标识符表示 Sale_Item 那个类的两个内部结构表达式。

const 润色的是 this 操作方式符,为何把它写在外面呢?

因为 this 操作方式符是隐性参数,也就是说不能在表达式参数里头直接定义那个参数,但在构筑成员表达式的时候又会附带上那个 this 操作方式符。

就像他们平时买一些进口食品,他们买这些进口食品除支付它的价值外,还要承担一定的关税,那个关税他们平时看不见摸不着,但它确的确实存在的。this 操作方式符就像那个关税,看不见但又的确存在。

那个比喻可能比较牵强,但大概那个意思,this 操作方式符是隐性的。因为 this 操作方式符是隐性的,那他们假如要用 const 润色 this 操作方式符所指的第一类,只能把 const 加在表达式末尾。

这儿强调一下,this 操作方式符本身是两个自变量操作方式符,它指向的地址就是两个自变量地址。比如上面的标识符,this 操作方式符指向 Sale_Item 类的地址,那个地址是两个自变量,类建立后就不能改变。而加上 const 后那个成员表达式就不能修正 Sale_Item 那个类的任何小东西。

最后

关于 const URL的 c++ 知识点需要注意的基本就这些,假如上面某些用词不准确,欢迎各位指出。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务