前言:由于笔者c++功力还不深厚,所以在此只是浅谈一下c++中的namespace和基本的输入输出的使用.
C++命名空间的引入:在c语言阶段常被人垢病的就是在稍微大型一点儿的项目里,变量的名字是极难命名的,程序员之间也常为了取个不重复的变量名而绞尽脑汁。所以C++中引入了一个新的概念->namespace,即命名空间,它的出现有效的解决了命名冲突的问题,各个命名空间有着各自独立的作用域,每个namespace中的变量在不展开命名空间的情况下一般互不影响。
namespace的使用格式:
/*namespace的使用语法格式
namespace _Name_Type_test1 /*命名空间的名字*/
{
/*定义变量/对象/函数/类...*/
int _a = 10;
//
}
注意!可以建立多个命名空间,但是各个命名空间的名字不能相同。
调用namesapce中的成员:
namespace _Name_Type_test1
{
int _a = 10;
}
namespace _Name_Type_test2
{
int _a = 10;
}
int main()
{
/*调用命名空间的成员时,需要指定作用域,在对应命名空间名后加上::调用*/
_Name_Type_test1::_a = 20;
_Name_Type_test2::_a = 10;
return 0;
}
可以自己测试一下,看看是什么现象?
通过调试我们可以发现,虽然变量名一样,但是不会冲突.
展开命名空间:
如果觉得指定作用域繁琐,也可以直接展开某个命名空间,展开后,其作用域中的成员可以直接使用,无需再指定作用域,当然如果展开后存在变量名冲突的问题时,还是要指定作用域来调用相应的成员
namespace _Name_Type_test1
{
int _a = 10;
}
/*完全展开*/
using namespace _Name_Type_test1;
int main()
{
_a = 20;
return 0;
}
当然,命名空间之间也可以嵌套,例如:
namespace _Name_Type_test1
{
int _a = 10;
namespace _Name_Type_test2
{
int _a = 10;
}
}
int main()
{
_Name_Type_test1::_a = 20;
_Name_Type_test1::_Name_Type_test2::_a = 10;
return 0;
}
C++的基本IO
C++中的输入输出一般是使用cin和cout来完成的,当然,在C++中也可以使用C语言中的输入scanf和输出printf。但是cin和cout在某些方面会更便捷。
1.cin和cout
关于它的重载和原理在此先不谈,先来看看他们的使用:
/*首先要想使用cin和cout,就要包含io流的头文件*/
#include<iostream>
/*cin和cout是被封装在std这个命名空间中的,要想使用有2中方式*/
//第一种:指定作用域使用
int main()
{
int _a = 0;
std::cin >> _a;
std::cout<<_a<<std::endl;
return 0;
}
//第二种:展开命名空间,但是这种方法只建议在学习阶段使用,具体原因先不谈
using namespace std;
int main()
{
int _a = 0;
cin >> _a;
cout<<_a<<endl;
return 0;
}
练习:使用cout打印 hello C++