C++ 命名空间 输入与输出

命名空间

在C语言中有一个问题一直没有很好解决,就是自定义函数和变量得命名问题,在长代码中包含很多得自定义变量和函数难免出现命名重叠导致程序错误。

所以在C++中本杰明博士(Bjarne Stroustrup)在C++中定义了一个命名空间关键字为:namespace。命名空间是一个新得作用域,作用域中的内容只在本域中生效,若在作用域之外需要调用域中内容需要加上作用域限定符::

如上图我们在同一个程序中定义了两个同名变量a和b,程序还是可以正常运行,就是由于两个同名变量是处在不同的作用域中,我们通过作用域的名字对作用域内的变量进行访问便不会出现同名歧义。

我们在看C++代码的时候经常会看到using namespace std

这是C++库函数的命名空间,例如cout和cin还有endl都是C++里面的库函数,我们平时使用是需要添加std::其中std就是库函数的命名空间的名字,若我们加上using namespace std后面的代码都不需要添加std::就可直接使用了,是因为using namespace会将后面的命名空间的访问开放不再需要名字和作用域限定符才能访问,只是当我们将其开放后命名空间内的变量函数就相当于是全局变量和函数不能在定义相同名字的变量,函数只能通过函数重载定义。

输入与输出

在C++中对输入输出格式也进行了改良,C语言是使用printf进行输出,scanf进行输入,我们还需要对输出格式进行手动的控制。在C++中使用cout<<进行输出,cin>>进行输入,编译器会自动识别输入输出类型。

其中cout是ostream类型的一个对象,cin是istream类型的一个对象,这两个类都是在std这个命名空间下所以在使用时需要包含头文件<iostream>再加上空间名和作用域限定符或者使用using namespace。再C++中为了与C语言的库函数进行区分,C++库函数的头文件一般都不会带.h但是在一些较为旧的编译器中也存在支持带.h的包含方式。

相关推荐
山峰哥几秒前
现代 C++ 的炼金术:铸就高性能与高可维护性的工程实践
java·开发语言·前端·数据结构·c++
小尧嵌入式6 分钟前
QT软件开发知识流程及秒表计时器开发
开发语言·c++·qt·算法
ULTRA??6 分钟前
强化学习算法分类,工具箱AI总结
开发语言·c++·人工智能
GISer_Jing7 分钟前
Next.js 15 全栈开发实战指南
开发语言·javascript·ecmascript
JIngJaneIL9 分钟前
基于Java在线考试管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot
凌康ACG9 分钟前
c++使用quickjs执行JavaScript
javascript·c++·quickjs
JIngJaneIL13 分钟前
基于Java音乐管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
赖small强17 分钟前
【Linux C/C++开发】深入解析 Linux C/C++ 中的 Deferred Crash (延迟崩溃)
linux·c语言·c++·asan·core dump·延迟奔溃·mprotect
繁华似锦respect19 分钟前
C++ 智能指针设计模式详解
服务器·开发语言·c++·设计模式·visual studio
郝学胜-神的一滴19 分钟前
Linux进程创建的封装与设计模式应用:结构化分析与实践指南
linux·服务器·开发语言·c++·程序人生·设计模式