当前位置: 首页 > news >正文

C++入门(一)

文章目录

  • 前言
  • 一、C++的发展史
  • 二、c++关键字
  • 二、c++命名空间
    • 1、代码演示
    • 2、::(域作用限定符) 和namespace(命名空间)
    • 3、命名空间可以嵌套使用
    • 4、同一个工程中的相同名字的命名空间
  • 三、c++的输入&&输出
    • 1、iostream(输入输出流)和namespace(命名空间)
    • 2、代码实现
    • 3、说明
  • 四、std命名空间的使用惯例
  • 总结


前言

C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。
1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。


一、C++的发展史

在这里插入图片描述

二、c++关键字

C++总计63个关键字,C语言32个关键字

在这里插入图片描述


二、c++命名空间

1、代码演示

在这里插入图片描述

在图上我们很明显的看到,在c中rand既是个变量又在头文件中是个函数,这样C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决。

接下来在c++中使用 namespace来解决,也引出命名空间的概念 即:namespace。

在这里插入图片描述
这里的zsc是命名空间的名字,名字可以随便取,一般为自己名字的缩写。

如果想打印命名空间的中的rand,如下。

在这里插入图片描述

2、::(域作用限定符) 和namespace(命名空间)

namespace(命名空间)可以理解为一堵墙,将变量可以存在命名空间中,而using namespace 就是讲这个墙拆开,如果想使用该命名空间中的变量,有二种方法 如下:

1、加命名空间名称及作用域限定符

在这里插入图片描述

2、使用using namespace 命名空间名称 引入

在这里插入图片描述

3、命名空间可以嵌套使用

在这里插入图片描述

4、同一个工程中的相同名字的命名空间

同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
如下:
在这里插入图片描述
在这里插入图片描述

合成

在这里插入图片描述

三、c++的输入&&输出

1、iostream(输入输出流)和namespace(命名空间)

iostream是输入输出的头文件,而iostream存放在命名空间中,只有使用了命名空间std,才能使用该头文件
一般老版的编译器存在后缀.h,但一般编译器中,不存在,如下:
在这里插入图片描述
显然在VS2022编译器中,不存在后缀.h。

2、代码实现

输出

在这里插入图片描述
显然endl的作用相当于“\n”。

输入

在这里插入图片描述


3、说明

  1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件以及按命名空间使用方法使用std。
  2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。
  3. <<是流插入运算符,>>是流提取运算符。
  4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。

四、std命名空间的使用惯例

  1. 在日常练习中,建议直接using namespace std即可,这样就很方便。
  2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对
    象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 + using std::cout展开常用的库对象/类型等方式。

总结

第一个层次,C++基础 (平平常常)挑选一本入门书籍,如《C++ Primer》、《C++大学教程》或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也止于此,另外《C++ 标准程序库》及《The C++ Standard Library Extensions》可供参考。

第二个层次,正确高效的使用C++ (驾轻就熟)此层次开始必须自修,阅读过《(More)Effective C++》《(More)Exceptional C++》、《Effective STL》及《C++编程规范》等,才适宜踏入专业C++开发之路;

第三个层次,深入解读C++ (出神入化)
关于全局问题可读《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》、《STL源码剖析》,要挑战智商,可看关于模版及模版元编程的书籍如《C++ Templates》、《C++设计新思维》、《C++模版元编程》;

第四个层次,研究C++ (返璞归真)
阅读《C++语言的设计和演化》、《编程的本质》(含STL设计背后的数学根基)、C++标准《ISO/IEC14882:2003》、C++标准委员会的提案书和报告书、关于C++的学术文献。由于我主要是应用C++,大约只停留于第二、三个层次。然而,C++只是软件开发的一环而已,单凭语言并不能应付业务和工程上的问题。建议读者不要强求几年内“彻底学会C++的知识”,到达第二层左右便从工作实战中汲取经验,有兴趣才慢慢继续学习更高层次的知识。虽然学习C++有难度,但也是相当有趣且有满足感的。

c++学习之路漫长而艰难,愿同诸位共同努力!!!

相关文章:

C++入门(一)

文章目录 前言一、C的发展史二、c关键字二、c命名空间1、代码演示2、::&#xff08;域作用限定符&#xff09; 和namespace&#xff08;命名空间&#xff09;3、命名空间可以嵌套使用4、同一个工程中的相同名字的命名空间 三、c的输入&&输出1、iostream&#xff08;输入…...

C#控制台程序读取输入按键非阻塞方式

参考内容&#xff1a; http://www.dutton.me.uk/2009-02-24/non-blocking-keyboard-input-in-c/ 相关代码&#xff1a; while (true) {if (Console.KeyAvailable){ConsoleKeyInfo key Console.ReadKey(true);switch (key.Key){case ConsoleKey.F1:Console.WriteLine("Y…...

小程序框架->框架,视图层,生命周期(逻辑层)

框架视图层生命周期(逻辑层) 1.框架 小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。 整个小程序框架系统分为两部分&#xff1a;**[逻辑层](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/)…...

Spring framework Day14:配置类的Lite模式和Full模式

前言 Lite模式和Full模式是指在软件或系统中的不同配置选项。一般来说&#xff0c;Lite模式是指较为简洁、轻量级的配置&#xff0c;而Full模式则是指更加完整、功能更丰富的配置。 Lite模式通常会去除一些不常用或占用资源较多的功能&#xff0c;以提高系统的运行效率和响应…...

公司要做大数据可视化看板,除了EXCEL以外有没有好用的软件可以用

当企业需要进行大数据可视化看板的设计和开发时&#xff0c;除了Excel&#xff0c;还有许多其他强大且适合大数据可视化的软件工具。以下是几种常用的好用软件&#xff0c;以及它们的特点和优势&#xff0c;供您参考。 一、Datainside 特点和优势&#xff1a; - **易于使用**…...

掌握深入挖掘数据本质的方法

文章目录 掌握深入挖掘数据本质的方法1. 确定数据类型2. 数据清洗3. 数据可视化4. 探索性数据分析5. 特征工程6. 机器学习算法7. 自然语言处理 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华…...

MyBatisPlus的学习项目页面

MyBatisPlus通过扫描实体类&#xff0c;并基于反射获取实体类信息作为数据库表信息 类名驼峰转下划线作为表名 名为id的字段作为主键 变量名驼峰转下划线作为表的字段名 常见注解 TableName&#xff1a;用来指定表名 Tableld&#xff1a;用来指定表中的主键字段信息 Tabl…...

基于EtherCAT的机器人多轴同步运动控制

随着工业自动化的发展&#xff0c;机器人在生产线上的应用越来越广泛。为了实现高效、精确的运动控制&#xff0c;机器人的多轴运动必须能够实现同步操作&#xff0c;它能够提高机器人的运动精度和稳定性&#xff0c;实现更高效的生产线操作。同时&#xff0c;它也为机器人的协…...

彩虹易支付 9.27 最新版加订单查询 sy 更新版

彩虹易支付 9.27 最新版加订单查询 sy 更新版 修复客服 2023/09/25&#xff1a; 1. 新增支付宝红包支付插件 2. 新增支付宝 APP 支付转 H5 支付 3. 更新了几个支付插件 安装教程&#xff1a; 环境&#xff1a;php7.2 上传后访问域名进行安装即可 源码下载&#xff1a;ht…...

python树状打印项目路径

学习这个的需求来自于&#xff0c;我想把项目架构告诉gpt问问它&#xff0c;然后不太会打印项目架构&#x1f602; 联想到Linux的tree指令 import osclass DirectoryTree:def __init__(self, path):self.path pathdef print_tree(self, methoddefault):if method default:sel…...

mysql误删误操作恢复数据,比传统方式和binlog2sql更快速用的恢复方式-reverse_sql恢复数据(单表多表)

场景&#xff1a; 误操作删除了某个表的数据&#xff0c;本文只讲工具的使用&#xff0c;首先自己通过mysqlbinlog或者记录找到误操作的时间范围&#xff1a;开始时间和结束时间&#xff0c;已经确定好是哪个binlog了下面以误删为例。 查看binlog是否开启 show variables like …...

CORE: Cooperative Reconstruction for Multi-Agent Perception 论文阅读

论文连接 CORE: Cooperative Reconstruction for Multi-Agent Perception 0. 摘要 本文提出了 CORE&#xff0c;一种概念简单、有效且通信高效的多智能体协作感知模型。 从合作重建的新颖角度解决了该任务&#xff1a; 合作主体共同提供对环境的更全面的观察整体观察可以作为…...

MySQL连接方式: Unix套接字 TCP/IP

今天连接mysql数据库使用mysql -u root -p指令的时候遇到了这个问题&#xff1a; 解决之后来总结一下mysql的连接方式 文章目录 1. Unix套接字&#xff08;或Windows命名管道&#xff09;特点&#xff1a;场景&#xff1a; 2. TCP/IP特点&#xff1a;场景&#xff1a; 3.对比总…...

TSINGSEE青犀智慧城市数字基座解决方案,助力城市数字化转型

一、行业背景 我国“十四五”规划纲要中提出&#xff0c;分级分类推进新型智慧城市建设&#xff0c;将物联网感知设施、通信系统等纳入公共基础设施统一规划建设&#xff0c;推进市政公用设施、建筑等物联网应用和智能化改造。完善城市信息模型平台和运行管理服务平台&#xf…...

【JavaEE】初识网络

网络初识 文章目录 网络初识网络发展史独立模式网络互连局域网LAN广域网 网络通信基础IP地址端口号格式 协议五元组协议分层OSI七层模型TCP/IP五&#xff08;四&#xff09;层协议1.物理层2.数据链路层3.网络层4.传输层5.应用程序 网络设备所在的分层封装和分用例子发送方接收方…...

UGUI交互组件ScrollBar

一.ScrollBar的结构 对象说明Scrollbar挂有Image和Scrollbar组件的主体对象Sliding Area表示滑动范围Handle滑块 二.Scrollbar的属性 属性说明Handle Rect控制柄对象的引用Direction拖动控制柄时滚动条值增加的方向Value滚动条的当前值&#xff0c;范围为 0.0 到 1.0Suze控制柄…...

DamiBus v0.51 发布

DamiBus&#xff0c;专为本地多模块之间通讯解耦而设计&#xff08;尤其是未知模块、隔离模块、领域模块&#xff09;。零依赖&#xff0c;特适合 DDD。 特点 结合 Bus 与 RPC 的概念&#xff0c;可作事件分发&#xff0c;可作接口调用&#xff0c;可作响应订阅。 支持事务传…...

[OpenJDK:环境变量配置]:填充Profile并修改默认配置

文章目录 一&#xff1a;背景&#xff1a;安装hadoop启动提示未找到JAVA_HOME1.1&#xff1a;配置Hadoop的Java环境变量 二&#xff1a;排查-定位解决2.1&#xff1a;查看环境变量配置发现没有JAVA_HOME2.1.1&#xff1a;解决&#xff1a;查看java安装目录2.1.2&#xff1a;再次…...

连接mysql报错 :Host ‘xxx.xx.x.x‘ is not allowed to connect to this MySQL server

排查思路 命令行连接mysql 我是安装在本地docker容器中的&#xff0c;可以使用一下命令直接连接 docker exec -it mysqldb mysql -u root -p其中mysqldb是我的mysql容器名字&#xff0c;后面跟随mysql的连接命令&#xff0c;然后输入密码即可。 如果没有设置过密码&#xff0c…...

Qt 布局(QSplitter 类QDockWidget 类) 总结

一、QSplitter 类(窗口分割) QSplitter类是一个Qt框架提供的基础窗口控件类&#xff0c;用于分割窗口&#xff0c;使得用户可以通过拖动分隔条来调节子窗口的大小。QSplitter在用户界面设计中非常常见&#xff0c;经常用于划分窗口区域&#xff0c;使得程序可以同时显示多个子…...

安装claude code,开始学习强大的AI编程助手

1.首先检查是否安装node.js&#xff08;版本尽量大于22&#xff09; window端输入winr -> cmd 打开终端查看node版本 可以使用nvm去管理nodejs版本&#xff0c;安装方式见 https://blog.csdn.net/m0_56820004/article/details/159585001?spm1011.2415.3001.10575…...

3步打造专属音乐库:开源工具解锁无损音质体验

3步打造专属音乐库&#xff1a;开源工具解锁无损音质体验 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 作为一款功能强大的开源音乐资源工具&#xff0c;洛雪音乐音源整合了全网海量音乐资源&am…...

告别AP离线!深入浅出解析神州数码AC/AP注册机制:二层发现 vs. DHCP Option 43实战选型

神州数码无线网络部署实战&#xff1a;AC与AP注册机制深度解析 在企业无线网络部署中&#xff0c;AC&#xff08;无线控制器&#xff09;与AP&#xff08;无线接入点&#xff09;的注册机制是构建稳定无线网络的基础环节。神州数码作为国内领先的网络设备提供商&#xff0c;其A…...

Mac用户必看:Homebrew换源提速全攻略(附清华镜像最新配置)

Mac开发者必备&#xff1a;Homebrew国内镜像加速终极指南 每次打开终端准备用Homebrew安装新工具时&#xff0c;那个缓慢的下载进度条是否让你抓狂&#xff1f;作为Mac生态中最受欢迎的包管理工具&#xff0c;Homebrew的默认服务器位于海外&#xff0c;国内用户常遭遇下载速度以…...

当柔性车间遇上强化学习:从传统规则到DRL的调度进化史

柔性车间调度的智能革命&#xff1a;深度强化学习如何重塑制造业决策 在当今快节奏、定制化需求激增的制造业环境中&#xff0c;传统的生产调度方法正面临前所未有的挑战。想象一下&#xff0c;一个典型的电子设备制造车间&#xff1a;数百种不同规格的订单不断涌入&#xff0c…...

JavaScript快速入门:10个基础概念让你轻松掌握编程核心

JavaScript快速入门&#xff1a;10个基础概念让你轻松掌握编程核心 【免费下载链接】You-Dont-Know-JS &#x1f4d7;&#x1f4d2; (PT-Br translation) JS Book Series. 项目地址: https://gitcode.com/gh_mirrors/you/You-Dont-Know-JS JavaScript作为现代Web开发的基…...

从零开始:用Arduino+ULN2003驱动28BYJ-48步进电机(附完整代码)

从零开始&#xff1a;用ArduinoULN2003驱动28BYJ-48步进电机&#xff08;附完整代码&#xff09; 在创客和硬件爱好者的世界里&#xff0c;步进电机因其精准的位置控制能力而备受青睐。28BYJ-48作为一款经济实惠的五线四相步进电机&#xff0c;配合ULN2003驱动板&#xff0c;成…...

cat-catch:构建智能化媒体资源捕获的浏览器扩展解决方案

cat-catch&#xff1a;构建智能化媒体资源捕获的浏览器扩展解决方案 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch cat-catch是一款专注于网页媒体资源智能捕获的浏览器扩展工具&#xff0c;通过深度…...

SunnyUI中UIAvatar的进阶应用与自定义配置

1. UIAvatar控件基础回顾与核心属性解析 在SunnyUI这个强大的WinForms控件库中&#xff0c;UIAvatar可以说是用户界面设计的"门面担当"。它专门用于展示用户头像、品牌标识或者任何需要圆形/圆角矩形展示的图形元素。虽然基础使用很简单&#xff0c;但很多人可能只停…...

RAG实战解析:如何通过检索增强生成提升知识密集型NLP任务性能

1. RAG技术为什么能改变知识密集型NLP任务格局 第一次听说RAG&#xff08;Retrieval-Augmented Generation&#xff09;这个概念时&#xff0c;我正被一个开放域问答项目折磨得焦头烂额。当时我们用纯BART模型生成的答案总是出现事实性错误&#xff0c;比如把"特斯拉创始人…...