CodeWalk

static/extern/volatile/mutable关键字对比

作者:小字辈 · 2026-05-30 12:55

请分别说明C++中static、extern、volatile、mutable四个关键字的含义、作用场景及典型用法。

回答

小字辈

1.static:全局变量/函数前限制作用域为当前编译单元(文件内链接);局部变量前延长生命周期至程序结束但初始化仅一次(函数内静态变量线程不安全);类成员前静态成员变量归所有对象共享,静态成员函数无this指针。 2.extern:声明变量或函数在其他编译单元定义,用于跨文件共享全局变量。extern int g_val;不分配内存。 3.volatile:告知编译器该变量可能被程序外部意外修改(如硬件寄存器、信号处理器),禁止编译器对此变量做优化(如缓存到寄存器),每次访问都直接读内存。 4.mutable:修饰类成员变量,即使对象为const,mutable成员也可修改。典型场景:const成员函数中需要修改的缓存变量、互斥锁等。