关闭

关于头文件中常量和静态常量的用处

753人阅读 评论(0) 收藏 举报
分类:

常量,即不能改变的量。

静态,即内存中只存在一个。

C++ Primer中提到在全局作用域中定义的const变量默认为文件的局部变量,像

//file_1.cc
const int DDD = 1;
//file_2.cc
extern const int DDD;
这样的用法是错误的。

会出现

这样的错误。

而在全局作用域中定义的非const变量在整个程序中都可以使用。

//file_1.cc
int AAA = 1;
//file_2.cc
extern int AAA;
这样的用法就是正确的。

const对象是文件的局部变量说的是const放在.cc文件中,如果将const对象定义在头文件中,则在引用了该头文件的源文件则可以使用该const对象。就像在源文件中定义了const对象一样。

另外在头文件像避免重复定义,可以使用下面措施:

#ifndef M_AAA
#define M_AAA
const int AAA = 1;
#endif

那三行以#开头的一句都不能少。


C++中关于const变量和static const变量的区别,百度知道有这么一段解释:

对于C/C++语言来讲,
const就是只读的意思,只在声明中使用;
static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;
对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.
static const 应该就是上面两者的合集.
下面分别说明:
全局:
const,只读的全局变量,其值不可修改.
static,规定此全局变量只在当前模块(文件)中可见.
static const,既是只读的,又是只在当前模块中可见的.
文件:
文件指针可当作一个变量来看,与上面所说类似.
函数:
const,返回只读变量的函数.
static,规定此函数只在当前模块可见.
类:
const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)
static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.


0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:64527次
    • 积分:1567
    • 等级:
    • 排名:千里之外
    • 原创:90篇
    • 转载:37篇
    • 译文:2篇
    • 评论:4条
    文章分类
    最新评论