c++ 全局常量和变量

dC++ 中我们希望在不同cpp文件中共享常量和变量。下面我们分别讨论:

1. 对于全局常量,我们可以用 const 限定词即可。例:

在para.h中以下内容 

#pragma once
const double Pi=3.1415926;

可在不同文件中包含头para.h 的方式调用全局常量。

如 在main.cc 中 

#include <iostream>
#include "para.h"  //调用全局常量 pi
#include "circle.h" //调用circle 函数
using namespace std;

int main(){
    cout<<"Pi="<<Pi<<endl;
    print_unit_cirle_area();
}

在circle.h 中 

#include<iostream>
#include "para.h"

using namespace std;

void print_unit_cirle_area();

在circle.cc 中 

#include "circle.h"

void print_unit_cirle_area(){
    cout<<"Area of a unit circle is"<<Pi*1*1<<endl;
}

在circle.cc 和 main.cc 文件中都引用了全局常量Pi的值。 编绎 g++ main.cc circle.cc 结果是

Pi=3.14159
Area of a unit circle is3.14159

1. 对于全局变量,我们不能直接去掉const的方法。如将para.h 中的Pi 的const 去掉会报错。

原因是double Pi=3.1415926; 在main.cc 和circle.cc 中变量PI重复定义,变量重复定义会报错。(对于常量C++语法允许!)为了防止变量重新定义,在头文件para.h 中声明全局变量,然后在

任意一处源文件中定义一次即可。 例:

在para.h中以下内容 

#pragma once
const double Pi=3.1415926;
extern double R;

在main.cc中 

#include <iostream>
#include "para.h"  //调用全局常量 pi
#include "circle.h" //调用circle 函数
using namespace std;

double R=3;

int main(){
    cout<<"Pi="<<Pi<<endl;
    cout<<"Radius="<<R<<endl;

    print_cirle_area();
}

在circle.h 中  

#include<iostream>
#include "para.h"

using namespace std;

void print_cirle_area();

 在circle.cc 中 

#include "circle.h"

void print_cirle_area(){
    cout<<"Area of the circle is"<<Pi*R*R<<endl;
}

编绎 g++ main.cc circle.cc 结果是

 Pi=3.14159
Radius=3
Area of the circle is28.2743

总结:

1. 对于全局常量,只要在头文件中加上 const double a=1.3; 形式,在不同的cpp文件中调用即可。

2. 对于全局变量,在头文件中用extern声明 extern double a; 然后在任意的cpp文件中 定义 double a=1.3; 即可; 在别的cpp文件中加入声明a的头文件即可。(不能同时 extern double a=1.3) 这样会引起变量重复定义的错误。

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值