首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

头文件中定义const变量的疑义

2013-11-15 
头文件中定义const变量的疑问引用常量表达式是编译器在编译时就能够计算出结果的整型表达式。引用如果 cons

头文件中定义const变量的疑问

引用
常量表达式是编译器在编译时就能够计算出结果的整型表达式。


引用
如果 const 变量不是用常量表达式初始化,那么它就不应该在头文件中定义。相反,和其他的变量一样,该 const 变量应该在一个源文件中定义并初始化。应在头文件中为它添加 extern 声明,以使其能被多个文件共享。


疑问:
1. 只有整型的常亮表达式才可以定义const变量在头文件中吗?

//head.h
const double const_val = 9.5;



//main.cpp
#include <iostream>
using namespace std;

#include "head.h"

int main()
{
cout << const_val << endl;
return 0;
}


编译通过并成功执行输出9.5。

不是很理解这边的说法。

2. A)将const变量定义在头文件中,源文件包含该头文件对const变量进行访问;
   B)将const变量定义在源文件中,其他源文件利用extern声明对const变量进行访问;
   A)和B)有何区别了?
   书上说用常量表达式初始化的const变量可以放在头文件中定义,即用A),其他的情况则选择B),但上面发现double初始化的const变量也可以用A),求解释?
   另外A)实际上是不为const变量分配存储空间的,而B)则为const变量分配空间,是这样吗?

谢谢! c++ const
[解决办法]
A和B都为const变量分配空间的,A和B编译后结果是一样的。我的理解是谁的可读性更高用谁。
[解决办法]
定义在头文件中,每次include它的时候,该文件在你include有一份拷贝!
而在cpp文件中,你在外部extern,你整个工程只有一份数据!
[解决办法]
好好理解 定义和申明的区别就好了!
[解决办法]
c++11 对常量表达式的定义放宽了,看点新书吧。

热点排行