【世界新要闻】C++面试八股文:static和const的关键字有哪些用法?
某日二师兄参加XXX科技公司的C++工程师开发岗位第7面:
面试官:C++中,
static
和const
的关键字有哪些用法?二师兄:
satic
关键字主要用在以下三个方面:1.用在全局作用域,修饰的变量或者函数为静态的,限制在本文件内使用。2.方法内修饰修饰静态局部变量,在第一次访问的时候初始化。3.内类修饰成员函数和成员变量,此函数或变量由类持有,而非类的对象持有。【资料图】
二师兄:
const
关键字主要也有三个用途:1.修饰函数参数,则在函数内部不可以修改此参数。2.修饰类的成员方法,表面此方法不会更改类对象的任何数据。3.修饰变量,表明变量不可以被修该。面试官:现在两个指针,一个是
const int*
,另一个是int * const
,两者有什么区别?二师兄:这要要看
const
和*
的位置,const
在前称为常量指针,const
在后称为指针常量。常量指针的指针部分可变,指针指向的内容不可变。指针常量则相反,指针指向的内容可变,指针不可变。面试官:嗯,那么你知道顶层
const
和底层const
吗?二师兄:额。。。不知道。。。
面试官:知道
constexpr
关键字的作用吗?二师兄:了解一些。
constexpr
关键字修饰的变量具有编译器求值的功能。修饰的函数是否在编译器求值要取决于传入的参数是不是编译器确定的,这属于元编程的范畴。面试官:嗯,那你知道
consteval
和constinit
这两个关键字的作用吗?二师兄:额。。。了解过一些,忘记了。
面试官:好的,回去等通知吧。
让我们来复盘一下今日二师兄的表现:
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
不能被忽略。
你知道
consteval
和constinit
这两个关键字的作用吗?
还记得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++!(狗头)
标签:
甘肃:“寒凉”持续盘踞 “甘味”农产备受考验
(上海战疫录)专访上海一居民区书记:坚持!背后6000多居民等着我们
西宁公安严厉打击涉疫违法犯罪 依法处理案件72起123人
甘肃渭源:千年渭水文化蕴“写生热” 校地合作塑学生文化涵养
5月16日起 西宁市部分区域有序开放
青海西宁:设置“黄码医院”保障重点人群医疗服务需求
- 06-07【世界新要闻】C++面试八股文:static和const的关键字有哪些用法?
- 06-07苹果MR头显Vision Pro,能为元宇宙行业带来什么?
- 06-07浩的寓意和象征_浩的寓意-当前要闻
- 06-07今日精选:电脑屏幕剪切快捷键是哪个_电脑屏幕剪切的快捷键是什么
- 06-07铁角什么意思(铁角飞地在)_当前独家
- 06-07首席医官谢荣鹏故事缘由是什么(首席医官谢荣鹏故事缘由)
- 06-07林大宇_关于林大宇概略
- 06-06崩坏星轨单日下载量破2000万刷爆原神上线|全球报资讯
- 06-06茅台与星巴克们抢生意:一杯咖啡最高46元,年轻人会买单吗?
- 06-06王玉雯新剧《微雨燕双飞》开播 挑战新角色命运跌宕引期待 每日快看
- 06-06专访国际航协北亚区副总裁解兴权:国内航司今年或仍临压 数字化转型是破局关键 焦点报道
- 06-06短讯!金禄电子:公司专注于印制电路板的研发、生产和销售
- 06-06世界今头条!加拿大央行决议来袭!若选择观望,英镑兑加元有望收复失地
- 06-06TrendForce:2023年第一季全球NAND Flash品牌厂商营收排行
- 06-06上交所修订GDR上市交易规则 资本市场双向开放深化
- 06-06中国空间站第四批实验样品顺利交付科学家_环球快讯
- 06-06招商仁和人寿2022年净亏损扩至13亿元 2023年欲实现打平盈利?
- 06-06什么是爬网(爬走网络) 快报
- 06-06最新资讯:飞机托运液体规定多少费用_飞机托运液体规定
- 06-06打造“一棵草到一杯奶”全产业链生态圈-世界百事通
- 06-06全球关注:专家建议:不同年龄段“呵护”眼睛有侧重
- 06-06环球热讯:华阳集团:今年以来HUD量产客户数量持续增加
- 06-06快看:100字运动会广播稿范文
- 06-06当前焦点!文案爱情温柔
- 06-06有路山海梦(关于有路山海梦介绍)_通讯
- 06-06停车区域、禁行路段……高考期间海口各考点出行指南来了 环球微动态
- 06-06世界即时:这是我的战争攻略_这是我的战争超全攻略解析
- 06-06众友回家行-上海站|沉浸式体验一汽-大众华东备件中心_世界热门
- 06-06观速讯丨中和热的定义一定要强调强酸强碱吗_中和热的定义
- 06-06婚礼答谢宴一般在婚礼后多久,婚礼答谢宴要给红包吗