概述:为了防止C语言中可能在一个项目里有相同的变量名、函数名等而造成冲突,C++引入命名空间概念,定义在命名空间中的内容其影响范围只在命名空间中,使用时也需要表明其属于哪个命名空间。
namespace X1{ int a; int Add(int x, int y){ return x + y; } typedef struct Node{ struct Node *next; int val; }LNode; }
.h
文件中都有命名空间为N1
的命名空间,最终包含到.cpp
文件中时会被合并到一个命名空间N1
中)::
来从命名空间中获取这个内容。int Test1(){ printf("%d ", X1::a); return 0; }
using namespace X1
,将命名空间X1中的内容全部暴露出来在全局中,因此使用时就不用再从X1
中取了。using namespace X1; int Test2(){ printf("%d ", a); return 0; }
using X1::
的方式引入到全局。using X1::a; using X1::Add; int Test3(){ return Add(1,2); }
注意对于命名空间中的结构体使用struct X1::Node node1
需要将struct
写到前面;但是有typedef
后也可以X1::LNode node2
C++的输入输出没有格式控制,当然也就无法实现限定小数点后多少位输出等格式化问题,若有此需要可以结合C语言使用。
#include <iostream> using std::cout; using std::cin; using std::endl; int main() { char ch; cin >> ch; cout << "Hello world " << ch << endl; return 0; }