【C++】--入门

前面我们学习C语言的时候,我们也有讲过C++的部分历史,我们看其名字就知道其和我们的C语言肯定是有密不可分的关系的,我们的C++是在C的基础上发展的,其弥补了C语⾔在表达能⼒、可维护性 和可扩展性⽅⾯的不⾜。

下面为C++的近年来的几次更新:

 其在前面的时候,我们会发现其是五年一个更新,不过我们发现在C++11的版本后,其又变成了3年一个更新。这是因为在后面其对于一些功能的优化和实现变得越来越复杂,后面C++团队就从变成了,三年一个更新。

一、C++的第一个程序

前面我们刚刚开始学习C语言的时候,我们的第一个程序是在屏幕上打印Hello  world,下面我们也一样使用C++在屏幕上实现这个功能。

下面我们将C语言和C++的都实现一遍,然后我们来看看这两个语言的区别。

代码如下:

我们发现其要在屏幕上打印Hello world代码还是有很大差异的,首先就是其多了using namepace std;语句,然后其是使用的cout来进行打印的。对于这几个不同的我们下面会进行详细的讲解。

这里我们要知道的是:

C++兼容C语⾔绝⼤多数的语法,所以C语⾔实现的hello world依旧可以运⾏,C++中需要把定义⽂件 代码后缀改为.cpp,vs编译器看到是.cpp就会调⽤C++编译器编译,linux下要⽤g++编译,不再是gcc。

二、命名空间

 1、namespace的意义

在C\C++中,变量、函数和后面我们要学到的类都是大量存在的,这些变量、函数、和类的名称将都存在于全局作用域中、那么就可能会导致我们的名称会有重复的,我们使用命名空间的目的是对标识符的名称进行进行本地化,以避免命名冲突或命名污染,namespace的出现就是为了解决这个问题的。

如下:

我们运行这个代码,那么程序就会报错,这是因为头文件stdlid.h中有一个函数名为rand的函数,那么我们定义的全局变量就和这个函数的名字冲突了,导致的无法编译。

那么当我们将这个头文件去掉后,那么我们就可以顺利的在屏幕上将10打印出来了。

2、namespace的定义

  • 定义命名空间需要用到namespace关键字,然后后面跟命名空间的名字,然后接上一对{}即可,{}中即为命名空间中的成员。命名空间中可以定义变量\函数\类型等。
  • namespace本质上是一个域,这个域和全局域是独立的,不同的域可以定义同名变量。
  • C++中域有函数局部域,全局域,命名空间域,类型;域影响的是编译的时候语法查找一个变量\函数\类型出处(声明或定义)的逻辑,所以有了域隔离,那么名字冲突就解决了。局部域和全局域除了会影响编译查处逻辑,还会影响变量的生命周期,命名空间和类域不影响变量生命周期。
  • namespace只能定义在全局,,当然其还可以嵌套定义。
  • 项目工程中多文件中定义的同名namespace会认为其是一个namespace,不会冲突
  • C++标准库都放在一个叫std的命名空间中

3、命名空间的使用

上面我们学习了命名空间的定义,那么我们定义好一个命名空间后,我们要如何进行使用呢?

1、指定命名空间访问,项目中我们推荐使用这种方式

如下:

2、using将命名空间中某个成员展开,项目中经常访问的不存在冲突的成员推荐使用这种方式。

如下:

 

相当于函数的声明一样,告诉编译器我们代码中有这个东西。

3、展开命名空间中的所有成员,项目中不推荐这种方式,容易产生冲突,日常的练习和程序还可以使用。

 

 三、C++输入和输出

 首先我们的C++是兼容C的大部分语法的,所以我们在C++中也可以通过包含其头文件调用C语言中的库函数。

然后我们的C++其也有属于其自己的输入输出方式:

1、使用cout标准输出对象,和cin标准输入对象,要注意的是我们要使用这两个标准输出输入流,必须要包含头文件,还有按命名空间使用方法包含std。

2、cout 和 cin 是全局的流对象,endl 是特殊的C++符号,表示换行输出,他们都包含在包含

    iostream 头文件中。

3、<<是流插入运算符,>>是流提取运算符

4、使用C++的cout和cin会比C语言的printf和scanf要方便一点,我们不需要再去使用占位符确定输出和输入的数据类型,cout和cin其会自动识别这些数据是什么类型的。

5、在一些算法竞赛中,如果要经常进行数据的输入和输出的话,那么我们推荐使用C语言的printf和scanf,后面我们会讲到。

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

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

相关文章

JAVA内存区域划分

根据《JAVA虚拟机规范》的规定&#xff0c;JAVA虚拟机在执行JAVA程序的过程中会把内存划分为不同的数据区域。不同类型的数据会存储在不同的区域&#xff0c;理解JAVA内存区域的工作细节对理解JAVA多线程、线程安全性有着重要意义。 注意&#xff0c;JAVA内存区域的划分与我们…

Navicat 导入 SQL 文件

1. 安装并打开 Navicat 安装 Navicat&#xff08;如 Navicat Premium、Navicat for MySQL&#xff09;&#xff0c;百度或者淘宝就有很多破解版。 打开 Navicat&#xff0c;进入主界面。 2. 新建数据库连接 点击左上角 “连接” 按钮&#xff0c;选择你对应的数据库类型&…

《Go语言高级编程》玩转RPC

《Go语言高级编程》玩转RPC 一、客户端 RPC 实现原理&#xff1a;异步调用机制 Go 的 RPC 客户端支持同步和异步调用&#xff0c;核心在于 Client.Go 方法的实现&#xff1a; 1. 同步调用&#xff08;Client.Call&#xff09;的本质 func (client *Client) Call(serviceMet…

四大核心要素驱动汽车智能化创新与相关芯片竞争格局

作者&#xff1a;北京华兴万邦管理咨询有限公司 翔煜 商瑞 智能汽车时代的加速到来&#xff0c;使车载智能系统面临前所未有的算力需求。随着越来越多车型引入电子电气架构转向中心化、智能驾驶的多传感器融合、智能座舱的多模态交互以及生成式AI驱动的虚拟助手等创新技术&a…

照明新基建:塔能科技如何用数字骨骼支撑智慧城市生长

一、能源管理困局&#xff1a;双碳目标下的市政用电痛点 在双碳背景下&#xff0c;城市照明用电量已引起市政部门的重点关注。据国家统计局统计&#xff1a;我国城市照明用电量已占据全市城市用电量的28%&#xff0c;部分城市的照明用电量已高达35%以上&#xff0c;高压钠灯传统…

让Claude Code像Cursor一样好用

最近折腾AI工具&#xff0c;发现Claude Code真是个宝藏。但说实话&#xff0c;初学者一上手&#xff0c;十有八九会被命令行那一堆黑框框劝退。你以为你用熟了&#xff1f;其实你只解锁了Claude Code不到20%的威力&#xff0c;剩下的80%都藏在命令行背后的“黑魔法”里。00后谁…

ROS 2 中更改从设备(如电机控制器)的运动模式

在 ROS 2 中更改从设备&#xff08;如电机控制器&#xff09;的运动模式&#xff08;例如从位置模式切换到速度模式&#xff09;&#xff0c;需要通过操作模式&#xff08;Mode of Operation&#xff0c;对应对象字典索引0x6060&#xff09; 进行设置。结合你的配置&#xff08…

朴素贝叶斯分类

一、朴素贝叶斯算法概述 朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的简单概率分类算法&#xff0c;它假设特征之间相互独立&#xff08;"朴素"的含义&#xff09;。尽管这个假设在现实中很少成立&#xff0c;但该算法在许多实际应用中表现优异&#xff0c;特别是…

python协程:yield实现协程执行、生成器取值的三种方式

yield关键字执行流程 注意&#xff1a;yield关键字的调用次数如果超过了任务执行次数会报错&#xff0c;提示stopiteration异常&#xff0c;例如 正常范围内的任务执行 # 定义一个任务&#xff08;函数1&#xff09; def task1():for i in range(3):print(f----task1 i {i}-…

pdf删除一页 python实现(已验证)

首先安装库 使用PyPDF2 首先&#xff0c;确保你已经安装了PyPDF2。如果没有安装&#xff0c;可以通过pip安装&#xff1a; pip install PyPDF2 然后运行 import PyPDF2def remove_page(input_pdf_path, output_pdf_path, page_number_to_remove):# 打开PDF文件with open(i…

2025.1版本PyCharam找不到已存在的conda虚拟环境

前言 创建Python项目指定conda虚拟环境是最常用的操作,我下载的2025.1版本PyCharam编译器找不到我已经创建好的conda虚拟环境,解决方法如下 目录 问题描述 问题解决 总结 问题描述 我使用2025.1版本PyCharam编译器创建项目指定已经存在的虚拟环境出现如下情景 说是我没有…

开机启动项在哪里设置 实用步骤分享

电脑开机时&#xff0c;系统会自动运行一系列程序&#xff0c;其中包括必要的系统进程和用户自行添加的启动项。然而&#xff0c;过多的启动项可能会导致开机速度变慢&#xff0c;影响系统性能。因此&#xff0c;合理管理开机启动项&#xff0c;可以优化电脑的运行效率。电脑开…

LeetCode--39.组合总和

前引&#xff1a;明天就考最后一趟考试&#xff0c;最近考试周&#xff0c;我时时断更&#xff0c;从明天开始&#xff0c;就会一直更新了&#xff0c;可以期待一下 解题思路&#xff1a; 1.获取信息&#xff1a; 给定一个无重复的整数数组和一个目标值 从数组中选取任意数量的…

Visual Studio2022和C++opencv的配置保姆级教程

1.c桌面开发和windows平台开发&#xff08;Visual Studio2022安装时&#xff09; 2.下载OPenCV 3.系统属性→添加环境变量→Path 4.VS2022配置opencv 5.项目→属性→VC目录中的包含目录和库目录 5.项目→属性→VC目录中的包含目录和库目录 包含 目录添加&#xff1a; D:\…

使用Ansible的playbook安装HTTP

实验环境 安装好ansible 一、准备测试服务&#xff08;192.168.10.41&#xff09; 1、安装HTTP服务 dnf -y install httpd 2、启动HTTP服务 systemctl start httpd 3、使用浏览器访问 192.168.10.41 因为开启了防火墙&#xff0c;所有无法访问 4、开放防火墙的80端口 …

V少JS基础班之第六弹

一、 前言 第六弹内容是闭包。 距离上次函数的发布已经过去了一个多月&#xff0c; 最近事情比较多&#xff0c;很少有时间去写文章&#xff0c; 低质量还得保证所以本章放草稿箱一个月了&#xff0c;终于补齐了&#xff0c;其实还有很多细节要展开说明&#xff0c;想着拖太久…

【面板数据】全国高频交易明细数据(2000-2024.7)

中国土地交易市场作为国家宏观调控的重要组成部分&#xff0c;其通过市场机制&#xff0c;使土地使用权在不同主体间流转&#xff0c;将土地资源配置给最具利用效率的部门或企业&#xff0c;提升土地利用率和经济产出。中国土地高频交易明细数据汇集了全国范围内2000-2024年7月…

MongoDB 常用增删改查方法及示例

MongoDB 的增删改查&#xff08;CRUD&#xff09;操作是其核心功能&#xff0c;主要通过 mongo shell 或驱动&#xff08;如 Node.js、Python 等&#xff09;实现。以下是最常用操作的详细说明及示例&#xff08;基于 mongo shell 语法&#xff09;。 ​一、插入操作&#xff…

moodle升级(4.5到5.0)

升级目标 由Moodle 4.5 (Build: 20241129) 升级到Moodle 5.0.1 (Build: 20250629) 参考教程&#xff1a;moodle升级&#xff08;详细版&#xff09;-CSDN博客 操作平台&#xff1a;宝塔 通过宝塔进行备份 备份文件 将/www/wwwroot/moodle 和/www/wwwroot/moodledata 复制…

基于Apache POI实现百度POI分类快速导入PostgreSQL数据库实战

## 引言:POI数据的价值与挑战 POI(Point of Interest)数据作为地理信息系统的核心要素,在智慧城市、位置服务、商业分析等领域具有重要价值。百度POI数据包含了丰富的地点信息(如名称、类别、坐标等),但如何高效处理这些数据并将其导入数据库进行分析是开发者面临的挑战…