C++基础——C++相比C语言的新特性梳理总结(C++新特性、输入输出方式、命名空间namespace)

news2025/7/22 8:48:59

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 

《QT开发实战》

《嵌入式通用开发实战》

《从0到1学习嵌入式Linux开发》

《Android开发实战》

《实用硬件方案设计》

长期持续带来更多案例与技术文章分享;

欢迎商业项目咨询,10年+软硬全栈内功,助力解决您的尊贵需求。

原文链接:https://winter.blog.csdn.net/article/details/129362280

——————————————————————————————————

目录

0 引言

1 C++常用的新特性

2 C++的输入输出方式

3 C++的命名空间

4 总结


0 引言

        指针、数据类型、变量类型、判断和循环等,这些和C 语言基本是一样的用法,这些C语言基础就没必要赘述了,我们关注的是C++的面向对象编程,本次博文梳理总结下C++相比C的一些新特性。

1 C++常用的新特性

这里仅列举几个常用的C++新特性。

  • C++比 C 语言新增的数据类型是布尔类型(bool),但在新的 C 语言标准里已经有布尔类型了,但是在旧的 C 语言标准里是没有布尔类型的,编译器也无法解释布尔类型。
  • 在传统的 C 语言里,变量初始化时必须在程序的前面定义在前面, 而 C++则是可以随用随定义。
  • C++可以直接初始化,如 int x(100);这样就直接赋值 x=100。

2 C++的输入输出方式

(1)输入输出流程

C语言的输入输出方式:

  • 输入:输入设备-》输入流-》scanf-》变量;
  • 输出:变量-》printf-》输出流-》输出设备;

而C++中,使用cin、cout代替scanf、printf,在输入和输出的流程上没变,只是关键字和用法变了,效率上还是C语言的高,但是没有C++的使用方便简单:

  • 输入:输入设备-》输入流-》cin-》变量;
  • 输出:变量-》cout-》输出流-》输出设备;

(2)语法形式

看下C++的输入输出语法

cin语法形式:

cin >> x;//x的数据类型随意

若要输入两个不同的变量:

cin >> x >> y;

cout语法形式:

cout << x << endl;//x的数据类型随意,endl 指的是换行符(可以省略),同 C 语言的“\n” 效果。

若要输输出两个不同的变量:

cout << x << y endl; // 注意错误的语法 cout<<x,y<<endl;变量间不能用逗号

3 C++的命名空间

(1)命名空间的作用

命名空间这个概念在上次博文Ubuntu下编写C++环境配置总结中提到过

  1 #include <iostream>
  2 using namespace std;
  3 int main()
  4 {
  5     cout << "Hello World!" << endl;
  6     return 0;
  7 }

        其中的using namespace std,注意1行中引用头文件的写法,是#include <iostream>,而不是iostream.h,因为有.h 的是非标准的输入输出流,是 c 的标准库。无.h 的是标准输入输出流,就要用命名空间。

        using 是编译指令, 声明当前命名空间的关键词。从字面上理解using namespace std的意思就是使用命名空间 std。cin 和 cout 都是属于 std 命名空间下的,加上 using namespace std;这句话,才可以使用,cin 和 cout 可以写成 std::cin 和 std::cout,“::”表示作用域。

上面是一个命名空间的示例,那么为什么会使用命名空间?

        命名空间其实可以解决命名冲突的问题,且方便管理,具体来说就是加个前缀。比如C++ 标准库里面定义了 vector 容器, 咱们自己也写了个 vector 类,这样名字就冲突了,通过加前缀解决。要用标准库里的就用 std::vector 来引用。用自己定义的就用自定义的前缀::vector 。经常写全名会很繁琐,所以在没有冲突的情况下写一句using namespace std;,接下去的代码就可以不用写前缀直接写 vector 了。

(2)自定义命名空间示例

在Ubuntu下新建一个02_namespace目录,目录下新建一个02_namespace.cpp文件,代码如下:

#include <iostream>
using namespace std;

namespace A
{
	int x = 0;
	void func(){
		cout << "A namespace\n";	
	}
}

using namespace A;

int main()
{
	func();
	A::x = 1;
	cout << A::x << endl;
	A::func();
	return 0; 
}

首先,自定义了一个命名空间A,里面有变量x初值为0,函数func()打印输出;

然后,声明了命名空间A,所以,可以在main()主函数中可以直接使用func(),没有声明的话就要写成A::func();

可见,主函数中可以直接修改命名空间中变量值,并将其打印出来。

编译程序,运行查看打印输出结果:

4 总结

        本次博文简单梳理了C++语言相比C语言的一些常用新特性,对比了C++和C语言的输入输出形式差异,显然C++的输出要更简单易用些,最后简述了C++命名空间的作用,并用一个小实例进行了演练测试,后面会出几篇博文继续总结下C++的面向对象编程。

作于202303072130,已归档

———————————————————————————————————

本文为博主原创文章,未经博主允许不得转载!

若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

祝君升职加薪,鹏程万里!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文翻译 | Momentum Contrast for Unsupervised Visual Representation Learning(前三章)

前言&#xff1a; 上一次读恺明大神的文章还是两年前&#xff0c;被ResNet的设计折服得不行&#xff0c;两年过去了&#xff0c;我已经被卷死在沙滩上 Momentum Contrast for Unsupervised Visual Representation Learning 摘要 我们提出了针对无监督表征学习的方法MOCO,利用…

上门按摩预约APP源码-东郊到家源码(开发,PHP,平台搭建)

一、什么是上门按摩预约APP源码&#xff1f; 上门按摩预约APP源码是一款家政服务类型的APP&#xff0c;可以帮忙用户在家就能享受按摩的服务。APP源码分两端&#xff0c;一端是用户端&#xff0c;另外一端是技师端。采用的技术&#xff0c;前端是安卓IOS&#xff0c;后端是PHP&…

java_Day004

1.二维数组 二维数组的创建与初始化&#xff08;java是支持规则数组和不规则数组的&#xff09; 例&#xff1a;int[][] array {{1,2},{2,3}{3,4,5}}; 结构如下&#xff1a; 二维数组的遍历&#xff1a; 例子&#xff1a; Testpublic void test21(){int[][] array new int[…

C++学习记录——십이 vector

文章目录1、vector介绍和使用2、vector模拟实现insert和erase和迭代器失效补齐其他函数深浅拷贝难点思考1、vector介绍和使用 vector可以管理任意类型的数组&#xff0c;是一个表示可变大小数组的序列容器。 通过vector文档来看它的使用。 #include <iostream> #inclu…

集群、分布式的理解

一、单机模式小型系统相对简单&#xff0c;所有的业务全部写在一个项目中&#xff0c;部署服务到一台服务器上&#xff0c;所有的请求业务都由这台服务器处理&#xff0c;这就是单机模式。显然&#xff0c;当业务增长到一定程度的时候&#xff0c;服务器的硬件会无法满足业务需…

强化学习 | 课堂笔记 | 第三课 MP的便利性,随机逼近方法

一、回顾 一、值函数、贝尔曼方程、贝尔曼最优方程 二、最优值函数 三、ADP 3.1 VI 3.2 PI 四、ADP可以使用的条件 五、Q函数 六、解决问题的方案 &#xff08;指的是解决“四 ADP可以使用的条件”中的三个问题&#xff09; 二、期望的计算 一、Markov过程的便利性 1…

新搭建Gitlab代码仓代码如何导入

这里写目录标题一级目录1.本地代码如何导入新Gitlab2.怎么将旧Gitlab代码导入新Gitlab一级目录 1.本地代码如何导入新Gitlab 修改本地代码 .git 目录下面的config 文件&#xff0c;主要是url参数&#xff0c;将url指向新的Gitlab仓库地址 [core]repositoryformatversion 0f…

【1096. 花括号展开 II】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 如果你熟悉 Shell 编程&#xff0c;那么一定了解过花括号展开&#xff0c;它可以用来生成任意字符串。 花括号展开的表达式可以看作一个由 花括号、逗号 和 小写英文字母 组成的字符串&#xff0c;定…

E900V21C(S905L-armbian)安装armbian-Ubuntu(WiFi)

基本上是s905L芯片的刷机都是如此&#xff0c;包括Q7等 在网上寻找好多的教程关于e900v21c的刷机包和教程都少的可怜&#xff0c;唯一的就是这个&#xff1a;山东联通版创维E900V21C盒子刷入Armbiam并安装宝塔和Docker&#xff0c;但他是不能用WiFi和蓝牙的然后就是寻找s90l的…

C++基础了解-01-基础语法

基础语法 一、基础语法 C 程序可以定义为对象的集合&#xff0c;这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象&#xff0c;方法、即时变量。 对象 - 对象具有状态和行为。例如&#xff1a;一只狗的状态 - 颜色、名称、品种&#xff0c;行为 -…

【LeetCode每日一题】——334.递增的三元子序列

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【题目进阶】九【时间频度】十【代码实现】十一【提交结果】一【题目类别】 贪心算法 二【题目难度】 中等 三【题目编号】 334.递增的三元子序列 四【题…

Vue3视频播放组件(Video)

Vue2视频播放组件 可自定义设置以下属性&#xff1a; 视频文件url&#xff08;videoUrl&#xff09;&#xff0c;必传&#xff0c;支持网络地址https和相对地址 视频封面url&#xff08;videoCover&#xff09;&#xff0c;默认为null&#xff0c;支持网络地址https和相对地…

【nacos2.2.1本地启动】

nacos2.2.1本地启动填坑之行 下载nacos代码 nacos文档地址&#xff1a;https://nacos.io/zh-cn/docs/quick-start-spring.html github地址下载代码&#xff1a;https://github.com/alibaba/nacos.git appllo文章&#xff1a;https://blog.51cto.com/muxiaonong/3933418 下…

UEFI学习(三)-创建一个dxe driver-UDK2017

创建一个dxe driver 创建UEFI DXE driver DXE驱动的运行阶段 DXE驱动创建 创建UEFI DXE driver 在edk2中&#xff0c;我们可以了解到它有非常多种类的模块&#xff0c;每种模块运行于不同阶段&#xff0c;上一阶段&#xff0c;我们尝试了一下标准应用程序的工程模块&#xff0c…

Centos7超详细安装教程

Centos 7适合初入门的带图形化的界面系统安装 本文是基于VMware虚拟机&#xff0c;centos7 64位安装教学 文章目录Centos 7适合初入门的带图形化的界面系统安装一、软件准备二、VMware新建适配虚拟机三、Centos 安装四、基础检查一、软件准备 VMware 虚拟机安装 官网下载链接&…

Redis 做延迟消息队列

背景 看到消息队列&#xff0c;我们肯定会想到各种MQ&#xff0c;比如&#xff1a;RabbitMQ&#xff0c;acivityMQ、RocketMQ、Kafka等。 但是&#xff0c;当我们需要使用消息中间件的时候&#xff0c;并非每次都需要非常专业的消息中间件&#xff0c;假如我们只有一个消息队…

问一下ChatGPT:DIKW金字塔模型

经常看到这张DIKW金字塔模型图&#xff0c;还看到感觉有点过份解读的图&#xff0c;后面又加上了insight&#xff0c;impact等内容。 Data&#xff1a;是数据&#xff0c;零散的、无规则的呈现到人们眼前&#xff0c;如果你只看到这些数字&#xff0c;如果没有强大的知识背景&a…

STM32之DMA

DMA介绍DMA(Direct MemoryAccess&#xff0c;直接存储器访问)提供在外设与内存、存储器和存储器、外设与外设之间的高速数据传输使用。它允许不同速度的硬件装置来沟通&#xff0c;而不需要依赖于CPU&#xff0c;在这个时间中&#xff0c;CPU对于内存的工作来说就无法使用。DMA…

音乐、音效素材库,好听的BGM都在这~

推荐6个超好用的音频素材网站&#xff0c;免费可商用&#xff0c;热门BGM配乐都能找到&#xff0c;自媒体视频剪辑必备&#xff01;建议收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/audio.html?vNTYxMjky 菜鸟图库素材非常多&#xff0c;包含了设计、办公、自媒体…

详解FPGA:人工智能时代的驱动引擎观后感

详解FPGA&#xff1a;人工智能时代的驱动引擎观后感 本书大目录 第一章 延续摩尔定律 第二章 拥抱大数据的洪流 第三章 FPGA在人工智能时代的独特优势 第四章 更简单也更复杂——FPGA开发的新方法 第五章 站在巨人肩上——FPGA发展新趋势 文章目录详解FPGA&#xff1a;人工智能…