贝利信息

c++ const和static区别_c++面试常考关键字

日期:2026-01-08 00:00 / 作者:裘德小鎮的故事
const管可变性,static管存储期与链接属性;二者维度不同,可共存但不可互替,如static const仅表示静态存储+只读,非编译期常量。

const 和 static 根本不是一类东西——一个管“能不能改”,一个管“在哪存、谁可见、活多久”。面试一问就卡壳,往往是因为把它们当成了同类修饰符去对比。其实只要分清维度,就能一次理清。

函数内部:static 局部变量 vs const 局部变量

两者行为完全不重叠:

类中成员:static 成员变量 vs const 成员变量

这是面试高频混淆点,关键看“属于谁”和“何时定值”:

文件作用域:const 全局变量默认 internal linkage,static 全局变量也是

很多人以为 const 就是“全局公开”,其实 C++ 中:

成员函数:const 函数 vs static 函数,为什么不能同时用?

因为语义根本冲突:

最易忽略的一点:static 控制的是**存储期与链接属性**,const 控制的是**可变性与类型契约**——它们可以共存(如 static const int),但绝不能互相替代。面试时若只答“一个不变、一个共享”,大概率会被追问底层机制;能讲清 linkage、ODR、constexpr 替代方案,才算真过关。