C++名字空间/C++命名空间(三)

2014-11-24 12:38:48 · 作者: · 浏览: 2
d func(void){cout << "Hello"<
}
int main(void)
{
MyNames::func();
// cout<<"Hello"<
return 0;
}
复制代码
7.3、避免使用using指示
using 指示注入来自一个命名空间的所有名字,这个方法看似简单,但是如果应用程序使用许多库,并且用 using 指示使得这些库中的名字可见,那么,全局命名空间污染问题就重新出现。
相对于依赖于 using 指示,对程序中使用的每个命名空间名字使用using 声明更好,这样做减少注入到命名空间中的名字数目,由 using 声明引起的二义性错误容易发现和修正。
8、综合应用举例
复制代码
////file : mynames.hpp
#ifndef MYNAMES__HPP_
#define MYNAMES__HPP_
namespace MyNames
{
//Member:Variable
extern int iVal;
//Member:Class
class MyString
{
public:
MyString(const std::string&);
void OutputString(void);
private:
std::string str;
};
//Member:Function
void NormalFunc(void);
//Member:Struct
struct st_Names
{
char ch;
int count;
};
//Member:Union
union un_Names
{
char ch;
int count;
};
//Member:enum
enum en_Names
{
ZERO,
ONE,
TWO
};
}
#endif /* MYNAMES__HPP_ */
//------------------------------------------------------------------------------------------------------------
//file : mynames.cpp
#include
#include "mynames.hpp"
namespace MyNames
{
int iVal = 100;
MyString::MyString(const std::string& refstr)
{
str = refstr;
}
void MyString::OutputString(void)
{
std::cout << str << std::endl;
}
void NormalFunc(void)
{
std::cout << "NormalFunc" << std::endl;
}
}
//-------------------------------------------------------------------------------------------------------------
//file : example.cpp
#include
#include "mynames.hpp"
namespace Name = MyNames;
using namespace Name;
int main(void)
{
std::cout<
std::cout<
std::cout<
MyNames::MyString mystr("Hello");
mystr.OutputString();
MyNames::NormalFunc();
MyNames::st_Names myst;
myst.count = 0;
MyNames::en_Names myen;
myen = MyNames::ZERO;
MyNames::un_Names myun;
myun.count = 1;
return 0;
}