波奇学C++:命名空间和流输入输出

news/2024/4/27 2:32:09/文章来源:https://blog.csdn.net/Bagayalu1234567/article/details/130288605

目录

命名空间的引入

命名空间的使用

命名空间的展开

流插入和提取


初始C++:C++是从实验室出来的,兼容了C,Java和C#是公司做出来的,C++的出现在某些情况下,弥补了C的缺点,并含有面向对象的思想

命名空间的引入

问题引入:运行下列代码发现报错。

#include<stdlib.h>
int rand=0;
int main()
{printf("%d\n",rand);return 0;
}

原因:stdlib.h头文件中,有rand的函数,导致关键字rand重定义问题,而在一些大型项目中,可能会存变量名在重定义的问题。

解决方法:引入命名空间域,把相同的变量名的变量定义在不同的空间中。编译器搜索变量时就在不同的命名空间中搜索避免重定义问题。

什么是域? 域可以简单理解为划分的一块空间。

域分为:类域,命名空间域,局部域,全局域。

全局变量在全局域,局部变量在局部域,在c中全局变量和局部变量冲突时优先访问局部变量,由此可推断,编译优先在局部域搜索变量再去全局域中搜索。

编译器搜索:局部域>全域局,不指定不搜索命名空间域。

c的库会在全局域中

命名空间的使用

#include<stdio.h>
namespace m
{int rand=0;
}
int rand=1;
int main()
{int a=2;print("%d",rand);return 0;
}

由上文可知我们打印的是局部的值,有没用访问全局域的值和命名空间的值的方法

prinf("%d",::rand);//访问全局域
pritnf("%d",m::rand);//访问命名空间域

命名空间的展开

如果要大量访问一个命名空间,语法不免有些累赘,为了解决这个问题,C++支持把命名空间展开:相当于把变量放在了全局域。

using namespace m//把命名空间m展开

命名空间不仅可以定义变量还能定义结构体函数,嵌套命名空间。

嵌套命名空间的访问:

pritnf("%d",m1::m2::rand);

多个同名的命名空间会被合并成一个命名空间

当不同的头文件包含相同的命名空间时,引用头文件会使得命名空间合并。

c++的内置命名空间std包含STL,C++库
 

#include<iostream>//C++头文件没有.husing namespace std//展开命名空间stdint main(){cout<<"hellow world"<<endl;return 0;
}

命名空间和头文件的关系?

调用函数时,先找到函数的声明,再从声明中找函数的源码,引用<iostream>头文件把cout的声明放在了全局域中,那么下一步要从声明找cout的函数定义,可是函数定义并不在全局域中,放在了命名域中,解决方法就是展开std命名域。简单来说,声明放在了头文件,定义放在了命名空间中。

命名空间小建议,项目时不要展开命名空间,指定展开,平常日常练习中可以展开命名空间。

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

流插入和提取

cout<<hellow world<<endl//流插入
int x=0;
int y=0;
cin<<x<<y//流提取

简单理解为cout流插入的作用是把hellow world流入控制台,endl相当于换行符

cin流提取相当于scanf,把1,2提取到x,y。

cout/cin和printf,scanf的比较:

优点:cout,cin可以自动识别数据类型,涉及函数重载。

缺点:可能带来损失精度,要控制精度时使用c语言更方便。

c语言的printf和scanf比cin,cout快,原因cout要兼容c语言,检查C语言的缓冲区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102787.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c实例练习笔记(拓展)

本博文参考题目的地址看右边----》C技能树 我跟你说&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;c语言有bool类型&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;你是不是百度跟你说没有只有c才有&#xff1f; 是有的&#xff01;&#xf…

统计学 实验5

8.14 总体平均值&#xff08;μ&#xff09;&#xff1a;7.0 cm 总体方差&#xff08;σ&#xff09;&#xff1a;0.03 cm 样本平均值&#xff08;x̄&#xff09;&#xff1a;6.97 cm 样本方差&#xff08;s&#xff09;&#xff1a;0.0375 cm 样本大小&#xff08;n&#xff…

数百家数科公司齐聚用友BIP技术大会,共享企业数智化领先实践

4月19日&#xff5e;4月21日&#xff0c;由用友公司主办的“2023用友BIP技术大会“在用友产业园&#xff08;北京&#xff09;盛大召开&#xff0c;用友介绍了更懂企业业务的用友BIP-iuap平台&#xff0c;并发布了全面数智化能力体系&#xff0c;助力企业升级数智化底座&#x…

构建高效数据中台——数据只有被使用起来,才能创造价值

产品经理们时常会碰到这种问题&#xff1a; 我刚上线一个功能&#xff0c;请研发同志们帮我拉个数据出来分析&#xff0c;却被残酷告知需要排期。 我这里急得跺脚&#xff0c;但也只能理解。 数据研发们每天有查不完的数据和写不完的表&#xff0c;业务部门要的数据迟迟拿不到&…

CCBN 2023看点分析:国产8K摄像机国产化替代趋势增强

4月21日&#xff0c;为期3天的CCBN 2023&#xff08;第29届中国国际广播电视信息网络展览会&#xff09;在北京首钢会展中心圆满落幕&#xff0c;CCBN展会是亚洲广播电视设备展览会&#xff0c;也是中国广电行业规模最大、影响力最强的国际性展会之一&#xff0c;更是广电行业内…

同为科技(TOWE)防雷科普篇(二)——雷击灾害急救方法大全

前 言 当雷击发生时&#xff0c;空气中的各种微粒互相碰撞和摩擦便会使该空气介质两面的正负电荷的量持续积累&#xff0c;这时加于该空气介质的电压也会同时增加&#xff0c;当局部电压达到当时条件下空气的击穿电压时&#xff0c;该空气介质的局部便会发生电击穿而持续成为等…

23种设计模式-代理模式

代理模式 在代理模式&#xff08;Proxy Pattern&#xff09;中&#xff0c;一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中&#xff0c;我们创建具有现有对象的对象&#xff0c;以便向外界提供功能接口。 介绍 意图&#xff1a;为其他对象提供…

发展文旅夜游,活络城市文化生态

城市是一个对外的窗口&#xff0c;其夜间文化生态值得进一步挖掘&#xff0c;发展夜间文旅产业&#xff0c;并活络城市文化生态是重要的城市发展举措。实现这一目标需要保护和利用好城市夜景资源、挖掘城市夜生活文化内涵以及利用特色文化吸引夜游人流量。 第一、要保护和利用好…

ArcGIS、ENVI、InVEST、FRAGSTATS多技术融合提升环境、生态、水文、土地、土壤、农业、大气领域应用

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析能力与项目科研水平 点击查看原文 一、空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 …

20、Theos越狱调试Wallet

前面的总结中使用砸壳重签后的App进行调试,本篇在越狱环境下不重签App进行调试,但是还是需要砸壳获取Headers. 一、Cycript 1.1 在越狱环境中使用Cycript 在越狱环境上,安装Cycript插件.需要先安装adv-cmds插件,因为被Cycript插件所依赖、在Cydia中,安装Cycript 在设备中找到…

苦熬10年,国产操作系统“归零”,新操作系统上新,跟Excel很像

苦熬10余年&#xff0c;国产操作系统自主研发 说到国内自主研发的操作系统&#xff0c;经验最丰富的品牌&#xff0c;当然是麒麟OS. 从诞生到发展&#xff0c;历经10多年的努力&#xff0c;麒麟os逐渐成为了国内自主研发操作系统领域中的一颗耀眼的明珠。麒麟OS不仅推出了许多…

typescript全局安装卸载以及npm相关问题

全局安装 npm install -g typescript 全局安装之后&#xff0c;如果想要卸载要使用 npm uninstall -g typescript 全局安装之后可以在终端使用 tsc xxx 编译ts文件 本地安装&#xff0c;也就是在项目目录下安装 npm install typescript 本地卸载 npm uninstall type…

DHCP 给内网客户端分配ip地址

~ 为 InsideCli 客户端网络分配地址&#xff0c;地址池范围&#xff1a; 192.168.0.110-192.168.0.190/24&#xff1b; ~ 域名解析服务器&#xff1a;按照实际需求配置 DNS 服务器地址选项&#xff1b; ~ 网关&#xff1a;按照实际需求配置网关地址选项&#xff1b; ~ 为…

基于Html+Css的图片展示25

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

自动化工具 基于 Antd+DRF 开发了一款适配 JMeter 的接口自动化测试报告

JMeter Report 基于 AntdDRF 开发的一款 JMeter 测试报告服务&#xff0c;用于在 JMeter 接口测试中使用。 &#x1f334; 背景 JMeter 是测试工作中常用的一款工具&#xff0c;除了压测还可以用来做接口自动化的测试。 从事测试多年&#xff0c;接口自动化也做过很多的尝试…

基于PWM技术的三相光伏逆变器研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

一文让你熟练使用 JSONObject 和 JSONArray

依赖 导入阿里的 fastjson 依赖。 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.78</version></dependency>类型转换 String 与 JSON 相互转换 通过 JSONObject.parseObject…

面试2个月没有一个offer?阿里技术官的800页知识宝典打破你的僵局~

在经历了一波裁员浪潮后&#xff0c;大环境似乎有所好转&#xff0c;但对于面试者来说&#xff0c;面试愈发困难&#xff0c;现在面试官动不动就是底层原理&#xff0c;动不动就是源码分析&#xff0c;面试一定会抓你擅长的地方&#xff0c;一直问&#xff0c;问到你不会为止。…

集成学习(Ensembles)

Ensembles 前言EnsemblesAveraging,StackingWhy does averaging work?如何理解&#xff1a;In practice errors won’t be completely independent due to noise in the labels Random ForestsDoes averaging work if you use trees with the same parameters?Bootstrap Samp…

【手把手做ROS2机器人系统开发一】开发环境搭建

【手把手做ROS2机器人系统开发一】开发环境搭建 目录 【手把手做ROS2机器人系统开发一】开发环境搭建 一、专栏介绍&#xff1a; 二、开发环境搭建&#xff1a; 1.Ubuntu系统安装 2.ROS2系统环境安装 3.测试系统运行 一、专栏介绍&#xff1a; 大家好&#xff0c;今天给大家…