C++基础

news2024/9/23 23:33:45

C++基础

C++语言新特性

2.1 C++的新特性

C++比 C 语言新增的数据类型是布尔类型(bool)。但是在新的 C 语言标准里已经有布尔类
型了,但是在旧的 C 语言标准里是没有布尔类型的,编译器也无法解释布尔类型。
在传统的 C 语言里,变量初始化时必须在程序的前面定义在前面,而 C++则是可以随用随
定义。C++也可以直接初始化,比如 int x(100);这样就直接赋值 x=100,这些都是 C++特性的好
处。这里只说这些常用的新特性,其他特性不做描述或者解释了。
2.2 C++的输入输出方式
在 C 语言里,我们是这样输入或者输出的。
在这里插入图片描述

输入设备 输入流 scanf 变量

变量 printf 输出流 输出设备

输出过程

输入过程

在 C++里,我们使用以 cin 和 cout 代替了 scanf 和 printf。在输入和输出的流程上是不变的,
只是关键字变了,用法也变了。
在这里插入图片描述

输入设备 输入流 cin 变量

变量 cout 输出流 输出设备

输出过程

输入过程

要说效率上,肯定是 C 语言的 scanf 和 printf 的效率高,但是没有 C++中的 cin 和 cout 使
用方便。
C++的 I/O 语法方式如下。
cout 语法形式:

cout<<x<<endl; 

x 可以是任意数据类型,甚至可以写成一个表达式,这比 C 语言需要指定数据类型方便多
了,endl 指的是换行符,与 C 语言的“\n”效果一样。

错误示例:

cout<<x,y<<endl; // 在变量间不能用“,”。 

正确写法:

cout<<x<<y; // endl 可流省略,只是一个换行的效果。 

cin 语法形式:

cin>>x; 

x 可以是任意数据类型。

拓展,如何输入两个不同的变量。

cin>>x>>y; 

2.3 C++之命名空间 namespace

在第 1.3 小节里我们已经使用过命名空间,如下代码第 2 行。using namespace std;同时我们要注意第 1 行,不能写成 iostream.h,有.h 的是非标准的输入输出流,c 的标准库。无.h 的是标
准输入输出流就要用命名空间。

1 #include <iostream> 

2 using namespace std; 

3 int main() 

4 { 

5 cout << "Hello, World!" << endl; 

6 return 0; 

7 } 

using 是编译指令,声明当前命名空间的关键词。可以从字面上理解它的意思,using 翻译
成使用。这样可以理解成使用命名空间 std。因为 cin 和 cout 都是属于 std 命名空间下的东西,
所以使用时必须加上 using namespace std;这句话。cin 和 cout 可以写 std::cin 和 std::cout,“::”
表示作用域,cin 和 cout 是属于 std 命名空间下的东西,这里可以理解成 std 的 cin 和 std 的 cout。
为什么要使用命名空间?

有些名字容易冲突,所以会使用命名空间的方式进行区分,具体来说就是加个前缀。比如
C++ 标准库里面定义了 vector 容器,您自己也写了个 vector 类,这样名字就冲突了。于是标
准库里的名字都加上 std:: 的前缀,您必须用 std::vector 来引用。同理,您自己的类也可以加
个自定义的前缀。但是经常写全名会很繁琐,所以在没有冲突的情况下您可以偷懒,写一句
using namespace std;,接下去的代码就可以不用写前缀直接写 vector 了。

从命名空间开始我们就隐隐约约可以看到 C++面向对象的影子了。命名空间在很多 C++库
里使用到。有些公司也会自定义自己的 C++库,里面使用了大量的命名空间。从这里我们也可
以看出 C++是非常之有条理的,容易管理的,不含糊,易使用的。

在初学 Qt 时我们是比较少使用命名空间,或者比较少看到命名空间。当然也是可以在 Qt

里自定义命名空间,然后与 C++一样正常使用。

下面通过一个简单的例子来介绍自定义的命名空间和使用自定义的命名空间。在 Ubuntu

上我们新建一个目录 02_namespace_example,然后在 02_namespace_example 里新建一个

02_namespace_example.cpp 文件,内容如下。

1 #include <iostream> 

2 using namespace std; 

3 

4 namespace A 

5 { 

6 int x = 1; 

7 void fun() { 

8 cout<<"A namespace"<<endl; 

9 } 

10 } 

11 using namespace A; 

12 int main() 

13 { 

14 fun(); 

15 A::x = 3; 

16 cout<<A::x<<endl; 

17 A::fun(); 

18 return 0; 

19 } 

第 4 行,自定义了命名空间 A,里面定义了一个变量 x,并将 x 赋值为 1;定义了一个函数

fun(),并在 fun()加了输出打印语句 cout<<“A namespace”<<endl;。
第 11 行,声明使用命名空间 A。
第 14 行,在第 11 行声明了命名空间 A 后,才能直接使用 fun();否则要写成 A::fun();
第 15 行,将 A 命名空间下的 x 重新赋值为 3。
第 16 行,打印出 A 命名空间下的 x 的值。
第 17 行,调用 A 命名空间下的 fun()。

执行下面的指令开始编译。
g++ 02_namespace_example.cpp -o 02_namespace_example
编译完成执行的结果如下。

2.2 C++面向对象

面向对象的三大特征是继承,多态和封装,C++重面向对象重要的就是这些,我们下面通
过一些简单的实例加以理解,从这小节开始,我们将开启新的编程旅途。与 C 语言编程的思想
完全不同了,这就是 C++!理解概念和掌握这些编程方法对学习 C++有很大的好处。

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

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

相关文章

Linux安装后基础配置--网络--ssh--基本软件

安装教程比较多就不写了。 网络配置 设置虚拟网络 修改网络配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33将ONBOOT由no改为yes&#xff1a; 修改为静态网络 /etc/sysconfig/network-scripts/ifcfg-eth33 BOOTPROTOstatic IPADDR192.168.1.129 GATEWAY192.168…

《c++ primer笔记》第九章 顺序容器

前言 知识点很多&#xff0c;这里只记录遗忘的。从这章开始会对前面章节的内容进行一个扩充&#xff0c;如果以前的忘了读起来会有点吃力。总的来说&#xff0c;本章节难度不大。 文章目录一、概述二、容器库概览2.1容器定义和初始化2.2赋值三、顺序容器操作3.1添加元素3.2删除…

Vue3通透教程【六】setup语法糖、computed函数、watch函数

文章目录&#x1f31f; 写在前面&#x1f31f; setup 语法糖&#x1f31f; computed函数&#x1f31f; watch 函数&#x1f31f; 写在最后&#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章&#xff0c;应粉丝要求开始更新 Vue3 的…

体验Linux 块设备驱动实验(模拟块)

目录 一、块设备 二、块设备驱动框架 1、块设备的注册和注销 2、gendisk 结构体 3、block_device_operations 结构体 4、块设备 I/O 请求过程 ①、请求队列 request_queue ②、bio 结构 三、编写驱动之请求队列 1、修改makefile 2、基本的驱动框架​编辑 3、添加头文…

XWiki Annotation Displayer 存在任意代码执行漏洞(CVE-2023-26475)

漏洞描述 XWiki 是一个开源的企业级 Wiki 平台&#xff0c;Annotation Displayer 是 XWiki 中的一个插件&#xff0c;用于在 XWiki 页面上显示注释和其他相关内容。 该项目受影响版本存在任意代码执行漏洞&#xff0c;由于Annotation Displayer 对 Groovy 宏的使用没有限制&a…

机载SAR文献调研(CSDN_0027_20230219)

文献&#xff08;电子所&#xff09;文献名[1]&#xff1a;詹学丽, et al., 一种用于合成孔径雷达的数字去斜方法. 雷达学报, 2015. 4(04): p. 474-480文章摘要该文提出了一种用于合成孔径雷达&#xff08;SAR&#xff09;的数字去斜方法&#xff0c;适用于发射信号脉冲宽度能够…

女神节 | PHP和Java算什么,女工程师才是最美最好的语言!

世界上第一个程序员是女性 第一个发现Bug的也是女性 在智领云有一群追求快乐和独立的女性工程师 她们多有魅力&#xff1f; 工位上她们专注于数据与代码 平日里郊游、瑜伽、插花、科学养娃一件不落 不仅用0和1编织数字世界 也在用心装点自己的生活 今天是国际劳动妇女节…

Linux 虚拟机安装及与windows远程登录

说明&#xff1a; 本次学习是在windows上安装虚拟机进行的。所以需要先安装VMware WorkStation&#xff0c;这玩意需要秘钥。所以你懂的&#xff0c;资源网上很多 Linux镜像文件下载地址CentOS Linux​​​​​​ 一、 打开VMware&#xff0c;点击创建新的虚拟机 二、选择下载…

【FATE联邦学习】自定义数据集自定义神经网络模型下的横向纵向训练

前言 代码大部分来自 https://fate.readthedocs.io/en/latest/tutorial/pipeline/nn_tutorial/Hetero-NN-Customize-Dataset/#example-implement-a-simple-image-datasethttps://fate.readthedocs.io/en/latest/tutorial/pipeline/nn_tutorial/Homo-NN-Customize-your-Datase…

[沧海月明珠有泪]两数求和

自己写的像屎山一样的代码&#xff0c;实在难以入眼。学习下人家优秀的代码思想粗看这个代码&#xff0c;用的是递归的思想前面三行的意思&#xff1a;初始化两个链表。第四行&#xff1a;把两个链表的值相加赋给sum第五行&#xff1a;判断是否大于9第六行&#xff1a;如果l1的…

map 、multimap

目录 1.基本概念,键值对 2.map的构造和赋值 3.map的大小和交换&#xff0c;size,empty,swap 4.map的插入和删除&#xff0c;insert(make_pair),clear,erase,[]利用key访问vale 5.map的查找和统计,find,count 6.map容器的排序&#xff0c;自定义排序&#xff0c;仿函数 6.…

5MW风电永磁直驱发电机-1200V直流并网MATLAB仿真模型

MATLAB2016b运行。主体模型&#xff1a;风机传动模块、PMSG模块、蓄电池模块、超级电容模块、无穷大电源。蓄电池控制、风机控制、逆变器控制。风机输出功率&#xff1a;直流母线电压&#xff1a;逆变器输出电压&#xff1a;逆变器输出电流&#xff1a;混合储能荷电状态&#x…

2023年金三银四跳槽季,阿里巴巴 Java10W 字面经,首次公布

Java 面试 “金三银四”这个字眼对于程序员应该是再熟悉不过的了&#xff0c;每年的金三银四都会有很多程序员找工作、跳槽等一系列的安排。说实话&#xff0c;面试中 7 分靠能力&#xff0c;3 分靠技能&#xff1b;在刚开始的时候介绍项目都是技能中的重中之重&#xff0c;它…

超图iServer扩展开发记录Restlet 1

在“REST 服务发布机制简述”中&#xff0c;讲述了 REST 服务发布的过程&#xff0c;资源的信息保存在资源配置文件里&#xff0c;并通过 REST 应用上下文传递给 REST 应用对象&#xff0c;从而在 HTTP 请求到达 REST 应用对象的时候&#xff0c;能够找到合适的资源实现来处理。…

Jwt简介

目录前言What is JSON Web Token?When should you use JSON Web Tokens?What is the JSON Web Token structure?HeaderPayloadSignaturePutting all togetherHow do JSON Web Tokens work?Why should we use JSON Web Tokens?前言 技术文档这种东西&#xff0c;我一直认为…

数枝营销与纷享销客达成战略合作,共同推动B2B企业营与销一体化

近日&#xff0c;营销咨询与数字化服务商数枝营销同国内知名SaaS CRM厂商纷享销客举行了战略合作签约仪式&#xff0c;双方就促进B2B企业的“营与销协同增长”将展开全面合作。纷享销客创始人兼CEO罗旭与数枝营销创始人黄海钧 另据工商信息显示&#xff0c;数枝营销&#xff08…

webshell管理工具-菜刀的管理操作

什么是webshell Webshell是一种运行在Web服务器上的脚本程序&#xff0c;通常由黑客使用来绕过服务器安全措施和获取对受攻击服务器的控制权。Webshell通常是通过利用Web应用程序中的漏洞或者弱密码等安全问题而被植入到服务器上的。 一旦Webshell被植入到服务器上&#xff0…

基于应用理解的协议栈优化

作者&#xff1a;余兵 移动互联网时代&#xff0c;不同的应用追求的产品体验差异性很大。 应用商店和图片等下载类型业务追求速度、越快越好&#xff0c;短视频关注起播、拖拽响应速度和观看过程卡不卡&#xff0c;直播追求画质清晰、高码率和直播过程流畅&#xff1b;而游戏则…

苹果iPhone屏下Touch ID技术专利获批,苹果Find My技术大火

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的最新清单&#xff0c;苹果近日获得了屏下 Touch ID 的新技术专利。专利中重点提及了“短波红外线”技术&#xff0c;相关元件位于屏幕下方或者集成到屏幕内。 该专利主要介绍了应用于屏幕 Touch ID 的光学成像系统&…

自动化工具selenium(一)

一)什么是自动化&#xff1f;为什么要做自动化&#xff1f; 自动化测试可以代替一部分手工测试&#xff0c;不能够完全代替手工测试 1)自动化测试相比于手工测试来说人力的投入和时间的投入是非常非常少的&#xff0c;自动化测试能够提高测试效率 2)在回归测试里面&#xff0c;…