运行环境(VS2013)
#include<iostream>
using namespace std;
int main()
{
cout << "hello world!" << endl;
return 0;
}
这是一段将hello world!打印到显示屏上的C++代码。
#include<iostream>
//using namespace std;
int main()
{
cout << "hello world!" << endl;
return 0;
}
将using namespace std;屏蔽后出现了以下错误
这是因为C++引用了命名空间这样的概念。
namespace是关键字(定义命名空间)
#include<iostream>//c++兼容c,所以iostream就包含了stdio.h这个库
//using namespace std;
namespace A
{
int a = 0;
}
int main()
{
printf("a:%d\n",a);
return 0;
}
运行出错
这是因为定义的a是在A这个命名空间里的,在没有接收到展开命令时他是不会展开的。
using namespace A;就是将命名空间A里的内容在此处展开:
#include<iostream>//c++兼容c,所以iostream就包含了stdio.h这个库
//using namespace std;
namespace A
{
int a = 0;
int b = 1;
}
using namespace A;
int main()
{
printf("a:%d\n", a);
return 0;
}
运行结果
using namespace A是将A里面的内容展开。
当然也可以
#include<iostream>//c++兼容c,所以iostream就包含了stdio.h这个库
//using namespace std;
namespace A
{
int a = 0;
int b = 1;
}
//using namespace A;
int main()
{
printf("a:%d\n", A::a);
return 0;
}
::是域作用限定符即A::a是访问A里面的a
还有
#include<iostream>//c++兼容c,所以iostream就包含了stdio.h这个库
//using namespace std;
namespace A
{
int a = 0;
int b = 1;
}
//using namespace A;
int main()
{
using A::a;
using A::b;
printf("a:%d\n", a);
printf("b:%d\n", b);
return 0;
}
using A::a即将A内的a在此处展开,同理展开b。
所以有三种访问命名空间内元素的方法
1、using namespace A(将A内所有的元素全部展开)
2、using A::a(将A内的a单独展开)
3、A::a(单独访问A内的a)
对于c++而言c++库里面的东西都是在std这个命名空间里面,所以一般就直接将std全部展开。否则就不能使用一些常用的如cout、cin输入输出等函数。
但是一般情况下在工程(多人合作)当中,一般为了防止命名冲突都会采用单独展开或者单独访问的方式。
cout输出函数和printf输出一样,但是其不用控制格式其会自动识别。
输出多个就直接cout<<输出值<<输出值<<“字符”<<endl(换行);
cin输入函数也一样cin>>输入值>>输入值;
#include<iostream>
using namespace std;
int main()
{
int a = 0;
int b,c;
cin >> b>>c;
cout << "a:" << a <<endl<< "b:" << b <<endl<< "c" << c << endl;
return 0;
}