c++学习笔记1——头文件与名称空间std

头文件类型约定示例说明
C++旧式风格.h结尾iostream.hC++程序可以使用
C旧式风格.h结尾math.hC、C++程序可以使用
C++新式风格没有拓展名(真棒iostreamC++程序可以使用,注意需要加using namespace std
转换后的C加上前缀c,没有拓展名cmathC++程序可以使用,可以使用不是C的特性,如namespace std

接下来了解using namespace std是什么

先说namespace

using namespace std是一种编译指令

namespace是名称空间,而std就是名称空间的一种

名称空间支持是一项C++特性,旨在编写大型程序以及将多个厂商现有的代码组合起来的程序时更容易,它还有助于组织程序

潜在问题是,两个封装好的产品,可能都包含同名函数,而名称空间就可以将产品封装在一个叫做名称空间的单元中,这样既可以用名称空间的名称来指出使用哪个厂商的产品

例如,如果两个封装好的产品都包括wanda()函数,M公司的产品和P公司的产品如何区分呢?他们会利用名称空间定义

 M::wanda()
 P::wanda()

这样程序就可以利用名称空间来区分不同版本

现在来了解std

函数、类等,都作为C++编译器的标准组件被放置在名称空间std中(当头文件拓展名内没有.h的时候,情况才是如此

这意味着iostream中定义的cout变量其实是std::cout,endl是endl::std

因此虽然程序中cout,cin等变量是赤裸裸的,但是我们应该知道,它的全名是std::cout

 std::cout;//使用std名称空间下的cout,而不是直接使用cout
 std::endl;//同理

但是这样做很麻烦不是吗?

因此using应运而生,using namespace std编译指令就表示,可以使用std名称空间中定义的名称,而不必使用std前缀

这是一个偷懒的做法,在大型项目中还是应该老老实实的进行名称空间定义下的变量

不过!!

如果我们又想偷懒,又不会影响大型项目中其他变量,那怎么办呢

还有一个更好的做法,即指定需要的变量

很难理解对吧,举个例子

比如std和stm空间下的cout,我只需要std空间下的,但是我直接using namespace std就会让整个std空间下的变量都可以简写,怎么办呢?

那么我就可以通过下列编译指令来指定声明某一个名称空间下的某一个变量,而不是声明某一个名称空间下整体的变量

 using std::cout;
 using std::endl;
 using std::cin;     

这相当于对std名称空间定义下的cout,endl,cin变量进行了一个using声明,这样便可以直接使用cin和cout等,而不用加上std::前缀

想要增删也很方便,直接多声明几个或者删去某个变量的声明即可,十分方便

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

introversi0n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值