一.为什么的要使用命名空间
为了解决俩个类中定义同名函数和同名变量在同一个程序中使用时产生名字冲突而引入命名空间。命名空间的目的是对表示服的名称进行本地化,以避免命名冲突或名字污染。
命名空间的定义:
namespace Namespace
{
//内容
}
二.什么是命名空间:
命名空间是为了把一些实体全局作用域分割开来,避免产生名字冲突。
{
变量(可以初始化)、常量、函数、结构体、类、模板嵌套
}
三.使用命名空间成员的方法
为了区别不同命名空间中的同名标识符,要用命名空间名和作用域分辨对命名空间成员进行限定。
命名空间名::命名空间成员
ns1::student
(1)使用命名空间别名
可以为命名空间起一个别名,用来代替较长的命名空间名。
namespace Television
{...}
可以用
namespace TV = Television;
using后面的命名空间成员名必须是由命名空间限定的名字。
using ns1::Student
using声明的有效范围是从using语句开始到using语句作用域结束。
例如:
using ns1::Student;
Student stud1(101,"wang",8);
相当于:
ns1::Student stud1(101,"wang",8)
*注意:
using ns1::Student;
using ns2:;Student;
Student stud1;
可以一个语句声明一个命名空间中的全部成员
using namespace 的一般格式为:
using namespace 命名空间名:
*同时用using namespace声明多个命名空间时,往往容易出错。
四.无名的命名空间
namespace
{
void fun()
{
cout<<"OK"<<endl;
}
}
由于该命名空间没有名字,所以其他文件中无法引用,仅限于本文件中使用,类似于C语言中的static全局变量的静态声明。
五.标准命名空间std
因为使用C++标准库时,需要对std进行限定使用起来很不方便
std::cout<<"OK"<<endl;
因此用using namespace对std进行限定:
using namespace std:
为了解决俩个类中定义同名函数和同名变量在同一个程序中使用时产生名字冲突而引入命名空间。命名空间的目的是对表示服的名称进行本地化,以避免命名冲突或名字污染。
命名空间的定义:
namespace Namespace
{
//内容
}
manespace //没用名称的命名空间 声明只有在创建它的文件中才可以使用的标识符
{}
二.什么是命名空间:
命名空间是为了把一些实体全局作用域分割开来,避免产生名字冲突。
例如:
高三年级有三个小明,如果他们在同一个班级,那么老师叫小明就会有三个同学答到,那么到底叫的是那个同学呢?这样就容易产生名字冲突。如果把三个小明分到不同的班级,校长点名就会叫某某班的小明。这样就不会产生名字冲突。命名空间就相当于分好的班级,给同名函数和变量分配不同的空间。
nemespace ns1{
变量(可以初始化)、常量、函数、结构体、类、模板嵌套
}
*注意声明类花括号后面有;而声明命名空间花括号后面不需要分号。
三.使用命名空间成员的方法
为了区别不同命名空间中的同名标识符,要用命名空间名和作用域分辨对命名空间成员进行限定。
命名空间名::命名空间成员
ns1::student
(1)使用命名空间别名
可以为命名空间起一个别名,用来代替较长的命名空间名。
namespace Television
{...}
可以用
namespace TV = Television;
在使用Television的位置都可以使用TV来代替
using后面的命名空间成员名必须是由命名空间限定的名字。
using ns1::Student
using声明的有效范围是从using语句开始到using语句作用域结束。
例如:
using ns1::Student;
Student stud1(101,"wang",8);
相当于:
ns1::Student stud1(101,"wang",8)
*注意:
using ns1::Student;
using ns2:;Student;
Student stud1;
会产生二义性,编译错误
可以一个语句声明一个命名空间中的全部成员
using namespace 的一般格式为:
using namespace 命名空间名:
*同时用using namespace声明多个命名空间时,往往容易出错。
四.无名的命名空间
namespace
{
void fun()
{
cout<<"OK"<<endl;
}
}
由于该命名空间没有名字,所以其他文件中无法引用,仅限于本文件中使用,类似于C语言中的static全局变量的静态声明。
五.标准命名空间std
因为使用C++标准库时,需要对std进行限定使用起来很不方便
std::cout<<"OK"<<endl;
因此用using namespace对std进行限定:
using namespace std: