第七节 模板(Templates)(4)
----------------------------------
使用名空间的格式是:
namespace identifier
{
namespace-body
}
这里identifier 是一个有效的标示符,namespace-body 是该名空间包含的一组类、对象和函数。例如:
namespace general
{
int a, b;
}
在这个例子中,a 和 b 是名空间general中的整型变量。要想在这个名空间外面访问这两个变量,我们必须使用范围操作符::。例如,要想访问前面的两个变量,我们需要这样写:
general::a
general::b
名空间(namespaces)的作用在于全局对象或函数很有可能重名而造成重复定义的错误,名空间的使用可以避免这些错误的发生。例如:
// namespaces
#include <iostream.h>
namespace first {
int var = 5;
}
namespace second {
double var = 3.1416;
}
int main () {
cout << first::var << endl;
cout << second::var << endl;
return 0;
}
|
5
3.1416 |
在这个例子中,两个都叫做var全局变量同时存在,一个在名空间first 下面定义,另一个在 second下面定义,由于我们使用了名空间,这里不会产生重复定义的错误。
名空间的使用 (using namespace)
使用 using 指令后面跟namespace可以将当前的嵌套层与一个指定的名空间连在一起,以便使该名空间下定义的对象和函数可以被访问,就好像它们是在全局范围内被定义的一样。它的使用遵循以下原型定义:
using namespace identifier;
例如:
// using namespace example
#include <iostream.h>
namespace first {
int var = 5;
}
namespace second {
double var = 3.1416;
}
int main () {
using namespace second;
cout << var << endl;
cout << (var*2) << endl;
return 0;
} |
3.1416
6.2832 |
在这个例子中的main函数中可以看到,我们能够直接使用变量var 而不用在前面加任何范围操作符。
这里要注意,语句using namespace 只在其被声明的语句块内有效(一个语句块指在一对花括号{}内的一组指令),如果using namespace是在全局范围内被声明的,则在所有代码中都有效。例如,如果我们想在一段程序中使用一个名空间,而在另一段程序中使用另一个名空间,则可以像以下代码中那样做:
// using namespace example
#include <iostream.h>
namespace first {
int var = 5;
}
namespace second {
double var = 3.1416;
}
int main () {
{
using namespace first;
cout << var << endl;
}
{
using namespace second;
cout << var << endl;
}
return 0;
}
|
5
3.1416 |
|
----------------------------------