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++!(狗头)
关键词:
责任编辑:宋璟
-
C++面试八股文:static和const的关键字有哪些用法?
-
不吃晚饭能减肥吗 多久见效_不吃晚饭能减肥
-
当前热议!美股三大股指小幅低开 Coinbase低开近20%
-
dnf100级剑帝走什么属性强化(dnf剑帝属性强化选择)
-
全球微资讯!胶原三肽和胶原蛋白有什么区别?
-
闪电律解|“男子车位被占后焊警示桩围车”引热议 车位被霸占该如何维权?_每日观察
-
天天简讯:云南女导游骂游客“良心被狗吃了”,官方通报处罚意见
-
房企退市潮,机构仍重仓:119只基金平均亏3%,谢治宇重仓市值超36亿元
-
国家发改委:第十四届夏季达沃斯论坛将于6月27日至29日在天津举办
-
怀素写字译文及解释_怀素写字译文
-
焦点消息!深圳高楼晃动_深圳高楼
-
首控集团(01269.HK)拟就债务资本化发行1.25亿股 观热点
-
当前播报:高考期间北京送考车辆不受尾号限行限制
-
凉风有信秋月无边下一句怎么说(凉风有信秋月无边下一句)
-
和美城乡 四大行动|黔东南州生态环境局丹寨分局:丹寨县政企联动 开展系列六五宣传活动_全球最资讯
-
西南证券及两名分析师收警示函 研报观点不审慎等
-
全球讯息:英国政府拨款2亿英镑在南剑桥建设新火车站
-
振江股份拟定增募资不超3亿元 2022年定增募资5.72亿|全球观天下
-
世界短讯!天津市源初公益基金会捐赠宝坻区周良街中心幼儿园10万元
-
上海家化将于6月28日召开股东大会
-
【环球聚看点】碳中和板块跌1.97% 曙光数创涨8.2%居首
-
致命弯道2完整版在线mp4_致命弯道2完整版
-
魔兽世界急救150-225_魔兽世界急救225以后去哪里学
-
年纪大的人去工地看看,是不是比以前的人少,都机械化了
-
当前通讯!2023北京协和医学院录取规则
-
焦点热讯:给足诚意乘胜追击 比亚迪汉DM-i/DM-p双车试驾
-
81岁实控人入行53年携格林生物二闯创业板,超八成收入来自宝洁等海外客户
-
2023高考天气地图:我国大部气温舒适利发挥 江南华南等地需防雨-环球聚看点
-
【世界快播报】男子打印店打印身份证,怕信息泄漏竟重装系统
-
甘肃省兰州第一中学新高考背景下高中教师素养提升专题研修班项目成交公告
-
变种异煞 电影_变种异煞 当前最新
-
世界快消息!重阳节是什么意思
-
so that和so that句型怎么用(so that和so that的区别)
-
香港启动“企业内地与海外暑期实习计划”助港青拓展视野_今亮点
-
网游画面超美的游戏_画面唯美的网游