[C++基础]001_<iostream>和<iostream.h>的区别
[C++基础]001_<iostream>和<iostream.h>的区别
C++是在C的基础上发展的,它是兼容C的。但只是兼容,它有自己完整的一套语言规则,当然你有自己的特点,其一便是<iostream>。
C++引入了名字空间namespace,它避免了变量和函数名字重复冲突,这是一个很好的机制,而<iostream>便是符合这一套实现的代码。
而<iostream.h>则是沿用了C风格的头文件,这个文件填入后,可以直接使用诸如cout、cin之类的函数。
总结:
■ <iostream> C++语言用,如果要使用cout,需要加入using namespace std,或使用std::cout
■ <iostream.h> C风格,引入可直接使用cout
C++基础]002_名字空间(namespace)
1 #include <iostream> 2 using namespace std; 3 4 namespace A{ 5 int a = 1; 6 } 7 8 namespace B{ 9 int b = 2; 10 } 11 12 namespace C{ 13 int c = 3; 14 } 15 16 int main(){ 17 18 int a = 10; 19 int b = 20; 20 int c = 30; 21 22 using namespace A; 23 using namespace B; 24 using namespace C; 25 26 cout<<"a = "<<a<<endl; 27 cout<<"b = "<<b<<endl; 28 cout<<"c = "<<c<<endl; 29 30 cout<<"a::a = "<<A::a<<endl; 31 cout<<"b::b = "<<B::b<<endl; 32 cout<<"c::c = "<<C::c<<endl; 33 34 system("pause"); 35 return 0; 36 }
以上代码,会输出什么呢?答案如下:
1 a = 10 2 b = 20 3 c = 30 4 a::a = 1 5 b::b = 2 6 c::c = 3 7 请按任意键继续. . .
可见,函数内定义的变量声明会覆盖命名空间里的变量声明。所以,这里需要编程者注意,如果你在名字空间里做了一些赋值操作,那么在调用它的地方,一定要注意会不会被覆盖。
注:最好的调用方法是名字空间::变量名。
1 namespace A{ 2 int a = 1; 3 } 4 5 namespace B{ 6 int b = 2; 7 } 8 9 namespace C{ 10 int c = 3; 11 int b = 3; 12 } 13 14 int main(){ 15 16 //int a = 10; 17 //int b = 20; 18 //int c = 30; 19 20 using namespace A; 21 using namespace B; 22 using namespace C; 23 24 cout<<"a = "<<a<<endl; 25 cout<<"b = "<<b<<endl; 26 cout<<"c = "<<c<<endl;
上面的代码是通不过编译的,因为变量b的调用不明确,这就是所谓的“名字冲突”。