【C++】定义全局常量的一个优雅的方案
来源:互联网 发布:表扬淘宝客服的话语 编辑:程序博客网 时间:2024/05/22 05:22
先列举两种常见的方案
1. 宏定义
#define pi 3.14
这种方案在C语言的项目中很常见,虽然《Effictive C++》第二节作者建议使用更多的const或者enum,但是我觉得#define在这个用法上除了没有编译器的类型检查,实在不失优雅。
2. 使用关键字extern
file1.xxx
extern const int globalValue = 1; // 全局变量定义
file2.xxx
extern const int globalValue ; // 声明全局变量
int localValue = 1 + globalValue // 使用该变量
这种方案太难看了!一旦很多个文件都要使用这个变量的话,就要声明很多次
下面是我认为一种比较优雅的方案
namespace!借助命名空间的变量可以在全局范围访问的特性。下面是一个例子
文件1,在命名空间内定义常量
// declare.hnamespace panda{class Foo{public:Foo(){ cout << "Foo construction\n"; }~Foo(){ cout << "Foo destruction\n"; }};// 类常量// main函数之前已经构造好,main函数结束后才析构const Foo foo;// 内置常量const double pi = 3.14;};
文件2,访问常量
#include <iostream>#include <conio.h>using namespace std;#include "declare.h"int main(){cout << "main begin" << endl;cout << panda::pi << endl; // 在其他文件使用常量cout << "main end" << endl;return 0;}
特别关注一下,类常量在主函数开始运行之前初始化,生命周期一直保持到主函数的结束。而且,其他文件要使用该常量时不用特别声明。
这种方法相对与前面的是不是更C++更优雅呢
0 0
- 【C++】定义全局常量的一个优雅的方案
- enum-------优雅的定义常量
- 关于c 和 c++ 中定义全局常量的异同
- VC++中全局变量、全局常量、全局结构体的定义
- VC++中全局变量、全局常量、全局结构体的定义
- 常量的优雅分类
- 全局 常量定义和字符串的一些比较
- C++全局常量与变量的定义方法
- C#:定义常量的两种方法
- C中const 定义常量的使用
- C语言使用字符串 常量的定义
- C/C++ 常量的定义与应用
- C/C++中define定义的常量与const常量
- c语言中用宏定义一个常量,数字后面带个U, L, F的含义
- c语言中用宏定义一个常量,数字后面带个U, L, F的含义
- 全局指针的定义
- 如何优雅的创建nodejs共享常量
- const定义的常量
- 1.REMOTE_ADDR:浏览当前页面的用户计算机的ip地址 HTTP_CLIENT_IP
- smarty section循环
- smarty 入门
- 蓝牙Bluetooth(BLE)
- absolute与relative怎么区分,
- 【C++】定义全局常量的一个优雅的方案
- Warning: Cannot modify header information - headers already sent by....
- 2013年03月21日
- stdClass是PHP的一个基类
- PHP正则表达式 /i, /is, /s, /isU等
- ARP地址解析协议
- 关于PHP5 Session生命周期介绍
- MySql查询结果按照指定顺序排序
- Linux 杂记