当前位置:首页>焦点 > 正文

C++面试八股文:static和const的关键字有哪些用法?

  • 2023-06-07 07:31:03来源:博客园

某日二师兄参加XXX科技公司的C++工程师开发岗位第7面:

面试官:C++中,staticconst的关键字有哪些用法?

二师兄:satic关键字主要用在以下三个方面:1.用在全局作用域,修饰的变量或者函数为静态的,限制在本文件内使用。2.方法内修饰修饰静态局部变量,在第一次访问的时候初始化。3.内类修饰成员函数和成员变量,此函数或变量由类持有,而非类的对象持有。


(资料图片仅供参考)

二师兄:const关键字主要也有三个用途:1.修饰函数参数,则在函数内部不可以修改此参数。2.修饰类的成员方法,表面此方法不会更改类对象的任何数据。3.修饰变量,表明变量不可以被修该。

面试官:现在两个指针,一个是 const int*,另一个是int * const,两者有什么区别?

二师兄:这要要看const* 的位置,const在前称为常量指针,const在后称为指针常量。常量指针的指针部分可变,指针指向的内容不可变。指针常量则相反,指针指向的内容可变,指针不可变。

面试官:嗯,那么你知道顶层const和底层const吗?

二师兄:额。。。不知道。。。

面试官:知道constexpr关键字的作用吗?

二师兄:了解一些。constexpr关键字修饰的变量具有编译器求值的功能。修饰的函数是否在编译器求值要取决于传入的参数是不是编译器确定的,这属于元编程的范畴。

面试官:嗯,那你知道constevalconstinit这两个关键字的作用吗?

二师兄:额。。。了解过一些,忘记了。

面试官:好的,回去等通知吧。

让我们来复盘一下今日二师兄的表现:

const在前称为常量指针,const在后称为指针常量。

这里的表述仁者见仁智者见智。但是在大名鼎鼎的《C++ Primer Edition 5》中文版中,const int* 被称为指向常量的指针,而int* const则被称为常量指针。这种表述更容易理解两种指针的差异。

你知道顶层const和底层const吗?

这里的顶层const和底层const概念主要是为了区分const修饰的是变量本身还是变量指向的内容。

int i = 42;const int ci = 42;//顶层constconst int* pi = &i; //磁层const,因为const修饰的是i所在的地址,不能通过pi去修改i,但是可以修改piint* const pi2 = &i;//顶层const,因为pi2无法修改const int& ri = i;//底层const,不能通过ri修改i

在传递参数时,顶层const可以被忽略,而底层const不能被忽略。

你知道constevalconstinit这两个关键字的作用吗?

还记得constexpr是否在编译时求值要取决于传入的参数吗?如果传入的参数是编译时确定的,constexpr函数就会在编译时求值,反之则会在运行时求值。

constexpr int add(int a, int b){    return a+b;}constexpr int sum1 = add(1,2);//编译时求值int a = 1, b = 2;int sum2 = add(a,b);//运行时求值

当使用consteval修饰函数和变量时,如果不能在编译时求值,则编译错误。

consteval int add(int a, int b){    return a+b;}constexpr int sum1 = add(1,2);//编译通过,在编译时求值int a = 1, b = 2;int sum2 = add(a,b);//编译失败

constinit关键字用于声明一个变量为常量初始化变量。使用constinit可以保证静态变量的初始化顺序和线程安全性,从而避免竞争条件的发生。需要注意的是,constinit关键字只能用于静态变量的初始化,不能用于动态变量的初始化。

需要注意的是,consteval和constinit关键字是C++20引入的, 小伙伴们可以在编译时加入-std=c++20尝试使用这两个关键字。

好了,今日份面试到这里就结束了,小伙伴们,对于今天二师兄的面试,能打几分呢?

关注我,带你21天“精通”C++!(狗头)

标签:

延伸阅读

推荐阅读

C++面试八股文:static和const的关键字有哪些用法?

某日二师兄参加XXX科技公司的C++工程师开发岗位第7面:>面试官:C++中

分析师下调苹果评级,称首发头显仅仅会带来短期利好 世界滚动

分析师下调苹果评级,称首发头显仅仅会带来短期利好:D A Davidson分析

2023“健康人生·绿色无毒”“防毒护苗”公益健步走活动在三亚举行

2023“健康人生·绿色无毒”“防毒护苗”公益健步走活动在三亚举行新海

女同学 裸泳_女同学 裸泳-每日消息

1、可以的。2、现在和以前泳衣不一样了。3、以前要扒开泳衣才能看到屁

多条铁路线路推行计次票等新型票制产品

记者6日从中国国家铁路集团有限公司了解到,6月8日起,宁杭高铁、京港

全球关注:ppgl医学简称是什么意思_dmzj是什么意思是什么的简称

想必现在有很多小伙伴对于dmzj是什么意思,是什么的简称方面的知识都比

今日热闻!暗黑2野蛮人雇佣兵符文之语_暗黑2野蛮人雇佣兵

1、act5的野蛮人:最强悍的肉搏佣兵,天生的嗜血者。2、技能:Bash(重

体罚女生的故事

1、跪能移2、顶着东西站着东西能掉3、用簪或针扎隐秘古代惩罚丫鬟体罚

内蒙古四力幷推制造业绿色转型|今日热门

据内蒙古日报报道,近年来,内蒙古将绿色发展理念贯穿制造业发展全过程

天天新动态:首艘国产大型邮轮出坞,打造船舶工业高质量发展“新样本”

首艘国产大型邮轮出坞,打造船舶工业高质量发展“新样本”---6日,在东

北京市发现两例猴痘病例,正在隔离治疗

近日北京市医疗机构报告两例猴痘病毒感染病例,其中一例为境外输入病例

漠漠轻寒上小楼晓阴无赖似穷秋什么意思_漠漠轻寒上小楼晓阴无赖似穷秋

1、青门引【宋】张先乍暖还轻冷,风雨晚来方定。2、庭轩寂寞近清明,残

大便不成形但不是拉稀吃什么药_大便不成形但不是拉稀-环球热消息

大便不成形但不是拉稀、由于饮食不当或肠道疾病,患者消化不良,胃肠菌

万润科技:橙思投资累计质押股数约为 1569 万股-世界快消息

每经AI快讯,万润科技(SZ002654,收盘价:7 19元)6月6日晚间发布公告

巨湾技研推出凤凰电池:面向新能源汽车,能量密度达 260Wh / Kg

IT之家6月6日消息,巨湾技研推出新款凤凰电池,能量密度可达260Wh Kg,

天天新资讯:弹簧测力计说明_弹簧测力计怎么读数啊

1、根据被测力的大小选择量程合适的弹簧测力计,不能超量程测量,又不

当前短讯!《FINAL FANTASY VII REBIRTH》顺利开发中,已进入决定发售日阶段

由SquareEnix开发的「FF7Re」系列第二作《FINALFANTASYVIIREBIRTH》本

美股开盘:三大股指小幅低开 Coinbase低开近20%

美股三大股指小幅低开,道指跌0 05%,纳指跌0 21%,标普500指数跌0 12%

邮轮游产品受热捧国际邮轮公司布局中国市场|天天快播报

邮轮游产品受热捧国际邮轮公司布局中国市场:据媒体,我国被公认为是世

世界今头条!日本排污入海进入最后阶段 国际社会反对呼声强烈

海外网6月6日电据日本福岛电视台、韩国《韩民族日报》6日报道,为将核

单县教体局:家校共育 乐享童年 天天关注

草长莺飞的五月过去,火红火红的六月就在眼前,沐浴着风和日丽,我们迎

今日讯!952300是什么号码_155是什么号码

1、130和155号码都是一样的,这两个都是联通号段,不存在所谓的好不好2

世界今热点:中国联通流量封顶怎么解除_联通流量封顶怎么解除

1、这是手机卡的本来属性。2、防止你流量到顶之后继续使用流量。3、把

林子之_关于林子之概略

1、林子之,男,杜皮乡杜皮咀村人,1890年出生,1938年7月出生,1941年

每日速讯:林子三教正宗统论_关于林子三教正宗统论概略

1、《林子三教正宗统论》是一本图书文章到此就分享结束,希望对大家有

小学生笑话大全_小学生笑话段子有哪些-即时看

解答:1、小学女生问老师:“我奶奶八十岁了。她能怀孕吗?”2、老师:

华熙生物董事长赵燕:我们不止于玻尿酸,布局合成生物,发力功能性食品 全球即时看

90年代微生物发酵法的诞生与规模生产,大幅度降本增效,让透明质酸应用

睿能科技(603933.SH)股东平潭捷润持股比例降至5%以下

智通财经讯,睿能科技(603933 SH)公告,公司股东平潭捷润股权投资管理

全球热推荐:英文解说Kitty晒Cos阿狸美照:聪明的狐狸永远不会上套

a topic-link{margin:10pxauto;display:block;width:600px;} topic-box{width:600px;heig

水龙弹之术_水遁水龙弹之术发音|全球百事通

1、水遁 水龙弹之术SeiTon,Seileondangnojizi。本文到此分享完毕,希望

猜您喜欢

    Copyright ©  2015-2022 现在服装网版权所有  备案号:粤ICP备18023326号-5   联系邮箱:855 729 8@qq.com