【C++】C++入门基础讲解(一)

💗个人主页💗
⭐个人专栏——C++学习⭐
💫点击关注🤩一起学习C语言💯💫

导读

经过一段时间的C语言学习,我们以及基本掌握了C语言的知识,今天,我们就开始学习C++,C++是包容C语言的,但是也有自己独特的语法。
由于时间原因,今天就到函数重载,下次我们会学习引用和内联函数。

1. C++与C语言区别

C++和C语言都是高级编程语言,具有相似的语法和结构。
C++相对于C语言在功能和灵活性上有更多的扩展。但是C语言仍然是一种重要的编程语言,在嵌入式系统和低级编程中仍然得到广泛使用。

  1. C++是一种支持面向对象编程的语言,而C语言主要是面向过程的。C++可以使用类、对象、继承等面向对象的概念,而C语言没有这些功能。
  2. C++标准库提供了丰富的功能和类,以简化编程任务。C语言的标准库相对较小,并且没有提供类的支持。
  3. C++支持自动内存管理的特性,如构造函数和析构函数。C语言需要手动管理内存,使用malloc和free等函数。
  4. C++对于其他编程范式(如泛型编程和元编程)的支持更好,可以实现更高级的编程技术。C语言的扩展性相对较弱。

2. C++关键字

在这里插入图片描述

3. 命名空间

C++中的命名空间是一种将相关的类、函数、变量等进行分组的机制。它可以防止命名冲突,并提供了更好的代码结构和可读性。

3.1 定义与使用

命名空间的声明使用关键字namespace,后面跟上命名空间的名称,例如:

namespace MyNamespace {
// 命名空间中的代码
}

在命名空间内部,可以声明和定义类、函数、变量等。使用命名空间内的成员时,需要在前面加上命名空间的名称和作用域解析操作符::。

namespace zhy
{// 命名空间中可以定义变量/函数/类型int zhou = 10;int Add(int x, int y){return x + y;}struct Node{struct Node* next;int data;};
}
int main()
{printf("%d\n", zhy::zhou);
}

如果不想每次都写命名空间的名称和作用域解析操作符,可以使用using关键字将命名空间中的成员引入当前作用域。

using namespace zhy;
int main()
{printf("%d\n", zhy::zhou);printf("%d\n",Add(99, 100));}

3.2 嵌套定义

在另一个命名空间内定义命名空间,可以使用命名空间的嵌套语法:

namespace www
{int zz = 99;namespace hh{int y = 999;}
}

4. C++的输入和输出

在C++中,可以使用cin进行输入操作,使用cout进行输出操作。

#include<iostream>
//std 所有C++库命名空间
using namespace std;
int main() {int num;cout << "请输入一个整数:";cin >> num;cout << "您输入的整数是:" << num << endl;return 0;
}

在这里插入图片描述

  1. 使用cout进行输出时,可以使用<<运算符将要输出的内容连接起来,多个内容之间可以使用<<进行连接。最后,使用cin进行输入时,使用>>运算符将输入的内容赋给变量num。
  2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。
  3. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。

5. 缺省参数

C++中的缺省函数是指在函数声明或定义时为参数提供默认值的函数。当调用该函数时,如果没有为相应的参数提供具体的值,则使用默认值。
缺省函数可以在函数声明或定义时提供默认值,也可以在函数原型中提供默认值。

void Print(int a = 0)
{cout << a << endl;
}
int main()
{Print();			// 没有传参时,使用参数的默认值Print(10);		// 传参时,使用指定的实参return 0;
}

在这里插入图片描述

5.1 全缺省函数

全缺省函数是指所有参数都提供了默认值的函数。这意味着调用该函数时可以不传递任何参数。

void printMessage(string message = "Hello, World!", int count = 1, char separator = '-') {for (int i = 0; i < count; i++) {cout << message << separator;}cout << endl;
}int main() {printMessage(); // 使用所有默认参数printMessage("Hi there!"); // 使用默认的 count 和 separator 参数printMessage("Goodbye", 3); // 使用默认的 separator 参数printMessage("Custom", 2, '+'); // 使用所有自定义参数return 0;
}

在这里插入图片描述

5.2 半缺省函数

void printNumbers(int a, int b = 0, int c = 0) {cout << "Numbers: " << a << " " << b << " " << c << endl;
}int main() {printNumbers(1); // 使用默认的 b 和 c 参数printNumbers(1, 2); // 使用默认的 c 参数printNumbers(1, 2, 3); // 使用所有自定义参数return 0;
}

在这里插入图片描述

6. 函数重载

C++函数重载是指在同一个作用域内定义多个同名函数,但是它们具有不同的参数列表。通过函数重载,可以根据不同的参数类型和个数来调用不同的函数,从而实现更灵活和多样化的函数调用方式。

// 函数重载示例
// 1、参数类型不同
int sum(int a, int b) {return a + b;
}double sum(double a, double b) {return a + b;
}
// 2、参数个数不同
int sum(int a, int b, int c) {return a + b + c;
}
// 3、参数类型顺序不同
void sum(int a, double b)
{cout << "Sum: " << a + b << endl;
}
int main() {int result1 = sum(5, 10);cout << "Sum of two integers: " << result1 << endl;double result2 = sum(3.14, 2.71);cout << "Sum of two doubles: " << result2 << endl;int result3 = sum(1, 2, 3);cout << "Sum of three integers: " << result3 << endl;sum(3, 3.14);return 0;
}

在这里插入图片描述

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

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

相关文章

2024最新幻兽帕鲁服务器多少钱一个?

幻兽帕鲁服务器多少钱&#xff1f;价格便宜&#xff0c;阿里云4核16G幻兽帕鲁专属服务器32元1个月、66元3个月&#xff0c;4核32G配置113元1个月、339元3个月&#xff1b;腾讯云4核16G14M服务器66元1个月、277元3个月、1584元一年。阿腾云atengyun.com分享阿里云和腾讯云palwor…

Libcurl的编译

什么是curl curl是常用来请求web服务器的工具&#xff0c;名字意思是客户端&#xff08;Client&#xff09;的URL工具。支持HTTP、HTTPS、rtsp等协议。 curl的作用 在我们的项目中curl主要用在两方面&#xff1a; 云升级&#xff0c;将云服务器上的软件包使用curl的API将软件…

数据结构-队列

文章目录 队列队列概述顺序队结构体顺序队基本操作初始化队列判断队空入队操作出队操作 循环队列结构体循环队列基本操作初始化队列判断队空入队操作出队操作 链队结构体链队的基本操作初始化队列判断队空入队操作出队操作 队列的应用循环队列双端都可插入删除循环链表表示队列…

SpringBoot的自动装配原理

一、SpringBootConfiguration注解的作用 SpringBootApplication注解是SpringBoot项目的核心注解,加在启动引导类上。点击进去可以发现SpringBootApplication注解是一个组合注解。其中SpringBootConfiguration和EnableAutoConfiguration是由Spring提供的,剩下的注解是由JDK提供的…

简单计算与模拟1:鸡兔同笼(POJ 3237)

1 问题描述 图1 问题描述 2 解题思路 鸡有两只脚&#xff0c;兔子有四只脚&#xff0c;且输入数据可能为奇数&#xff0c;使用公式计算即可。 3 设计代码 #include <cstdio> int main() {int nCases, nFeets;while (scanf("%d", &nCases) ! EOF){for (in…

负载均衡-Ribbon-自定义负载均衡算法

1.Ribbon 是什么 SpringCloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具主要功能是提供客户端的软件负载均衡算法&#xff0c;将 Netflix 的中间服务处连接在一起Ribbon的客户端组件提供一系列完整的配置项&#xff0c;如&#xff1a;连接超时、重试等。简…

数据结构——链式栈

采用链式存储的方式来构建栈 #include<bits/stdc.h>using namespace std;#define ElementType inttypedef struct LinkNode{ElementType data;struct LinkNode *next; } *LiStack;bool InitStack(LiStack &S){S (LinkNode *)malloc(sizeof(LinkNode));if(S NULL){…

R语言【taxa】——as_taxon():转换为 taxon 对象

Package taxa version 0.4.2 Description 将其他对象转换为 taxon 向量。taxon 构造器可能将 基础向量转换为 taxon 向量。 Usage as_taxon(x, ...) Arguments 参数【x】&#xff1a;要转换为 taxon 向量的对象。 参数【...】&#xff1a;其余参数。 Examples x <- taxo…

计算机视觉技术综述

目录 一、技术背景 1、什么是计算机视觉技术 2、该技术兴起的背景 二、国内外计算机视觉技术现状 1、计算机视觉技术分类、发展历程及其可能导致社会问题&#xff0c;研究中存在问题&#xff0c;如何改进。 计算机视觉技术分类&#xff1a; 计算机视觉主要发展历程&#xff1a;…

echarts 绘制垂直滚动热力图

问题1&#xff1a;提示功能无效 问题2&#xff1a;值筛选无效 效果 在线浏览 下载echarts官网例子(heatmap Examples - Apache ECharts) 稍作改动&#xff1a; generateData 入参改为长度和宽度noise.perlin2(i / 40, j / 20) Math.random() * 5y轴倒置指定zlevel为2 通过定…

SpringMVC-文件上传与下载

文章目录 文件上传与下载1.下载2.上传 文件上传与下载 1.下载 RequestMapping("/testDown")public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException {//获取servletcontext对象ServletContext servletcontextsession.get…

蓝桥杯备战——7.DS18B20温度传感器

1.分析原理图 通过上图我们可以看到DS18B20通过单总线接到了单片机的P14上。 2.查阅DS18B20使用手册 比赛的时候是会提供DS18B20单总线通讯协议的代码&#xff0c;但是没有提供读取温度数据的代码&#xff0c;所以还是需要我们去查看手册&#xff0c;我只把重要部分截下来了 …

将Android APP安装到sm8550 HDK的NVMe SSD

APP存储路径 在Android中&#xff0c;App在运行过程中主要访问的数据路径通常包括以下几个方面&#xff1a; 内部存储&#xff08;Internal Storage&#xff09;&#xff1a;App会访问其私有的内部存储空间&#xff0c;这个空间通常位于&#xff1a; /data/data/<package…

python-自动篇-运维-根据计算机硬盘、主板、CPU生成注册信息

文章目录 准备代码效果 准备 本实例需要使用WMI模块&#xff0c;所以需要安装WMI模块。在安装WMI模块之前&#xff0c;先要安装pywin32模块&#xff0c;WMI模块需要win32api的支持。使用pip安装pywin32模块和WMI模块的代码如下&#xff1a; pip install win32com pip install …

Ubuntu 22.04 安装tomcat

tomcat是常用的Java服务容器,这篇文章我们就来讲讲如何安装它。 更新软件包 首先是更新软件包,这是最常规的操作 sudo apt update 然后是开始安装,不多一会就可以安装好了 sudo apt install tomcat9 然后看一下状态 sudo systemctl status tomcat9 发现虽然启动了,但…

openssl3.2/test/certs - 053 - Name constraints subordinate CA. Adds

文章目录 openssl3.2/test/certs - 053 - Name constraints subordinate CA. Adds概述笔记END openssl3.2/test/certs - 053 - Name constraints subordinate CA. Adds 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 /*! * \file D:\my_dev\my_local_git_prj\study\…

Python第十一章(推导式)

一。列表推导式&#xff1a;目的化简代码&#xff0c;可以改变数据 例句1&#xff1a;如果while循环继续创建序列累加 例句2&#xff1a;如果for循环进行列表累加 1.循环列表推导式进行累加&#xff1a; 注释&#xff1a;第一个i表示的是返回的数据于列表&#xff0c;for后面内…

windows上使用anconda安装tensorrt环境

windows上使用anconda安装tensorrt环境 1 安装tensorrt1.1 下载最新的稳定的tensorrt 8.6.1(tensorrt对应的cuda、cudnn等版本是参考链接4)1.2 将tensorrt添加到环境变量1.3 安装tensorrt依赖1.4 安装Pycuda1.5 安装pytorch 2 测试2.1 测试TensorRT 样例(这个测试主要来源于参考…

【Python】01快速上手爬虫案例一:搞定豆瓣读书

文章目录 前言一、VSCodePython环境搭建二、爬虫案例一1、爬取第一页数据2、爬取所有页数据3、格式化html数据4、导出excel文件 前言 实战是最好的老师&#xff0c;直接案例操作&#xff0c;快速上手。 案例一&#xff0c;爬取数据&#xff0c;最终效果图&#xff1a; 一、VS…

docker生命周期管理命令

文章目录 前言1、docker create2、docker run2.1、常用选项2.2、系统2.3、网络2.4、健康检查 3、docker start/stop/restart4、docker kill5、docker rm6、docker pause/unpause总结 前言 在云原生时代&#xff0c;Docker已成为必不可少的容器管理工具。通过掌握Docker常用的容…