c++ (namespace)

双冒号
int val = 200;
void test_one()
{
	int val = 400;
	//双冒号为全局作用域的变量
	cout << val << ::val << endl;
}
用途 解决名称冲突问题
必须在全局作用域下
xxx.h
#include <iostream>
using namespace std;
namespace name1 {
	void goAtk();
}
xxx2.h
#include <iostream>
using namespace std;
namespace name2 {
	void goAtk();
}
xxx1.h
#include "game.h"
void name1::goAtk() {
	cout << "xxxxxx";
}
xxx2.h
#include "game.h"
void name2::goAtk() {
	cout << "xxxxxx";
}


main.cpp
#include "xxxx.h"
#include "xxxx2.h"
void test01() {
	name1::goAtk();
	name2::goAtk();
}


//无名、匿名命名空间
namespace {
	int m_C = 0; //等价于 static int m_C
	int m_D = 0; //等价于 static int m_D
}
//命名空间可以起别名
namespace veryLongName {
	int m_A = 0;
}
void test03() {
	//起别名
	namespace very = veryLongName;
	cout << very::m_A << endl;
	cout << veryLongName::m_A << endl;
}

posted on 2021-04-21 17:49  lodger47  阅读(77)  评论(0)    收藏  举报

导航