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++!(狗头)
关键词:
责任编辑:hnmd004
- 热点评!沛嘉医疗-B(09996)早盘涨超8%,中期业绩释放多重积极信号2026-08-24
- 中关村连收3个涨停板2026-08-24
- 长春高新:金赛佳®Ⅳ期临床试验聚焦高龄助孕群体2026-08-24
- 蜂亿健品牌:深入养蜂基地抓源头质量,确保顾客吃上绿色放心产品2026-08-24
- 8月24日元件板块跌幅达5%2026-08-24
- AcFan与时共进拥抱AI创作新技术!打造拟真人Vlog栏目,让AC娘走进用户的校园日常2026-08-24
- 乐划锁屏以三重美学体验,点亮指尖日常温柔2026-08-24
- 梁王夺冠为国羽正名!创4纪录颁奖两人脸都笑烂 王祉怡后台送上祝贺2026-08-24
- 巴萨神助攻!曼联捡到天大机会!昔日王牌遭弗里克彻底放弃 每日焦点2026-08-24
- 突破人情干扰,守住工亡认定的公平底线——以基层政务彰显“人民立场”2026-08-24
- 南方稳健成长贰号混合 (202002) 怎么样?202002今日估值2026-08-24
- 安世中国成本下台阶:从5寸到12寸,单颗芯片如何便宜70%2026-08-24
- 易方达优质精选混合 (QDII)(110011) 怎么样?110011基金行情2026-08-24
- 基金定投计算器怎么算收益?计算公式与使用方法详解2026-08-24
- 基金分红是什么意思?分红越多代表基金越好吗?2026-08-24
- 易方达消费行业股票 (110022) 怎么样?110022 基金行情2026-08-24
- 黄金基金有哪些?国泰黄金基金行情2026-08-24
- 005827是什么基金?005827基金行情2026-08-24
- 今日看点:止盈安排为何影响风险控制要关注?2026-08-24
- 每日关注!控股股东拟变更为博泰车联,海鸥住工开盘涨停2026-08-24
- 宏昆酒店集团旗下宝欐品牌携手新东方文旅 深耕西双版纳康养旅居市场2026-08-24
- 【意甲】AC米兰2比1客胜都灵,西塞、拉比奥建功2026-08-24
- ITZY Lia温泉泳装照曝光 蓝格吊带秀直角肩 慵懒眼神引热议_最资讯2026-08-24
- 开盘|国内期货主力合约涨多跌少,集运欧线涨超4%2026-08-24
- 8月24日生意社大豆油基准价为8914.00元/吨2026-08-24
- 前沿资讯!今年前7个月 山西省进出口总值近800亿元2026-08-24
- 上半年营收与净利双增 妙可蓝多推分红计划 当前看点2026-08-24
- 本科生涌入技校后,滤镜碎了2026-08-24
- 焦点讯息:国米替补双星坚持留队!飞翼迫使罗马诺改口 第五前锋计划生变2026-08-24
- 加拿大驻美大使:加美贸易谈判破裂原因涉及多项议题 视讯2026-08-24

(相关资料图)