C++全局变量

规则

全局变量只能在头文件申明,不能在头文件定义。
  • 工程全局变量

声明方式是头文件中extern 来声明, 原因是如果放在global.h中定义的话,就会出现global.obj和other.obj定义冲突的问题。

//global.h
extern int num; // 如果不加extern默认是extern, 这里要有良好的编程习惯,不要用默认,该写出来就要写出来
extern double* ptr;
//global.cc
int nun = 1;
double* ptr = new double(4); 
//other.cc
#include "global.h"
#include "other.h"
#include <iostream>
void show()
{
	std::cout<<num<<std::endl;
}
  • 编译单元全局变量

声明方式是源文件中static 来声明,static修饰的全局变量声明与定义同时进行,也就是说使用static声明了全局变量后,它也同时被定义了,是如果放在global.h中声明定义的话,就会出现global.obj和other.obj各出现一个变量,如果other不用的话就会浪费内存,而且编译器的优化也会给我们定位问题带来困扰,所以直接声明和定义都放在.cpp文件中就可以了。

//global.cc
static int nun = 1;
static double* ptr = new double(4); 

const修饰的全局常量

const 默认就是static, 这里就可以看到C++很奇怪,非const全局变量是默认extern, const全局变量是默认是static。 其他和上面没啥区别。

参考

https://www.cnblogs.com/catkins/p/5270388.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值