在《C++ Primer》第五版十八章中详细描述了 using 指示与 Using 声明的区别,个人也想了好久。首先,明确一下 using 声明与指示
using 声明: using std::cout;
using 指示: using namespace std;
1.初步展示区别
在我们通常的理解下,using 声明引入了一个名字,在声明之后的作用域中,所有用到该名字的地方,都是指的改名字。而using 指示则是将命名空间中的所有名字都引入当前作用域,效果有些类似若干个 using 声明。但事实上,这两个是存在很大的不同的。看以下例子:
(1)对using 声明:
namespace N1
{
int a = 0;
}
void f()
{
using N1::a; //此时下文中所有的 a 都将等效为 N1::a
int a = 4; //这句话将会导致编译器报重复定义的错误,因为 a 已经定义为 int a = 0,此时再次定义就重定义了
cout << a &