C++ const 对象

默认状态下,const 对象仅在文件内有效。

const int bufSize=512;//输入缓冲区大小

编译器将在编译过程中把用到该变量的地方都替换成对应的值。也就是说,编译器会找到代码中所有用到 bufsize 的地方,然后用 512 替换

某些时候有这样一种 const 变量,它的初始值不是一个常量表达式,但又确实有必要在文件间共享。这种情况下,我们不希望编译器为每个文件分别生成独立的变量。相反,我们想让这类 const 对象像其他(非常量)对象一样工作,也就是说,只在一个文件中
定义const,而在其他多个文件中声明并使用它。

解决的办法是,对于 const 变量不管是声明还是定义都添加 extern 关键字,这样只需定义一次就可以了:

// file 1.cc 定义并初始化了一个常量,该常量能被其他文件访问
extern const int bufSize =fcn();
// file 1.h 头文件
extern const int bufsize;//与file 1.cc 中定义的 bufsize 是同一个

如上述程序所示,file 1.cc 定义并初始化了 bufsize。因为这条语句包含了初始值,所以它(显然)是一次定义。然而,因为bufsize是一个常量,必须用 extern 加以限定使其被其他文件使用。

file 1.h头文件中的声明也由 extern 做了限定,其作用是指明 bufsize 并非本文件所独有,它的定义将在别处出现。

如果想在多个文件之间共享 const 对象,必须在变量的定义之前添加 extern 关键字。




《C++ Primer》 P54
posted @   double64  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-09-13 设计模式对应的解释
2022-09-13 C# 适应环境的换行 Environment.NewLine
2021-09-13 WPF DataTrigger 改变控件颜色
点击右上角即可分享
微信分享提示