标签:
std是标准命名空间名称
相同点:
std::和using namespace std;的意思是一样的,都表示使用命名空间std;
不同点:
放在程序中的位置不同
1. using namespace std;头文件如果包含了#include<iostream>,那么在头文件下方写上using namespace std;2.std::头文件如果包含了#include<iostream>,但是没有在头文件下方写上using namespace std;那么在使用标准输入流时就需要加上std::比如std::cout std:: string str; std:: cin 等,否则会报错
也就是说使用了“using namespace std;”就没必要使用“std::”了,一般情况下两者有其一就可以了
那么,为什么有这两种用法的区别了?因为,对于命名空间,是可以自定义的,除了那些默认的自带的命名空间,我们可以更改也可以自定义,想用哪一个的时候就用哪个比如我命名了一个命名空间为cc,
namespace cc
{
fun();
}
那么我用这个命名空间时就用cc:: fun() ,
当然也可以是:
using namespace cc;
fun();
以代码佐证:
//std:: 和using namespace std; #include "stdafx.h" #include <iostream> using namespace std ; namespace namespace1 { void welcome(); } namespace namespace2 { void welcome(); } void global_welcome(); int main(int argc, char* argv[]) { { // using namespace namespace2 ; //使用namespace2、std、全局三个命名空间 namespace2:: welcome(); } { using namespace namespace1 ; //使用namespace1、std、全局三个命名空间 welcome(); } global_welcome(); //使用了std和全局两个命名空间 return 0 ; } namespace namespace1 { void welcome() { cout<<"Welcome from namespace1.\n" ; } } namespace namespace2 { void welcome() { cout<<"Welcome from namespace2.\n" ; } } void global_welcome() { cout<<"GlobalWelcom!\n" ; }
运行结果是:
标签:
原文地址:http://www.cnblogs.com/hhddcpp/p/4301481.html