0
点赞
收藏
分享

微信扫一扫

c++命名空间的例子

小典典Rikako 2022-02-24 阅读 153

前面说了命名空间的理论上的意义,现在就以现实的例子说明,命名空间的用法,命名空间​用的基本原则或者说要求如下:

1、命名空间主要目的是圈定作用范围,避免命名冲突
2、不要在头文件中使用using引入其他命名空间
3、尽可能缩小引入命名空间范围,做到用什么引入什么
4、可以给命名空间取别名,也可以对命名空间嵌套
5、C++中尽量用匿名命名空间替代static
下面这个例子,包括了变量与函数在命名空间的用法,其引用是用了作用域解析操作符(::)的方法,这种方法不用using 声明或者 using编译指令,非常的直接而且好用,我非常喜欢​用这种方法:

​头文件:

root@mkx:~/learn/namespace1# cat globalData.h
namespace globalData{

extern int max ;
extern int min ;
int max1(const int *a, int size);
int min1(const int *a, int size);

}

源代码文件

root@mkx:~/learn/namespace1# cat globalData.cpp 
#include "globalData.h"

namespace globalData{

int min = 0;
int max = 100;
int max1(const int * data, int size)
{

int i = 0;
int result = data[0];
for(i = 1; i < size; i++)
{
if(result < data[i])
result = data[i];
}
return result;
}

int min1(const int * data, int size)
{

int i = 0;
int result = data[0];
for(i = 1; i < size; i++)
{
if(result > data[i])
result = data[i];
}
return result;
}

}

主函数代码文件

root@mkx:~/learn/namespace1# cat test1.cpp 
#include <iostream>
#include "globalData.h"
using std::cout;
using std::endl;

int main()
{
int data[] = {5, 4, 9, 3, 1, 10};
const int dataSize = sizeof(data)/sizeof(data[0]);
cout<<"Min int is "<<globalData::min1(data, dataSize)<<endl;
cout<<"Max int is "<<globalData::max1(data, dataSize)<<endl;
cout<<"min is "<<globalData::min<<endl;
cout<<"max is "<<globalData::max<<endl;
}

运行情况

root@mkx:~/learn/namespace1# g++ globalData.cpp test1.cpp -o test1
root@mkx:~/learn/namespace1# ./test1
Min int is 1
Max int is 10
min is 0
max is 100
root@mkx:~/learn/namespace1#
举报

相关推荐

0 条评论