【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…

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;连接超时、重试等。简…

echarts 绘制垂直滚动热力图

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

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

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

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 发现虽然启动了,但…

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常用的容…

uniCloud发行部署H5进行网页托管

生成文件&#xff0c;生成文件这个和我们平时用uniapp 生成H5的时候是一样的&#xff0c;我们可以选择hash 或者history 模式&#xff0c;默认的这是显示的根目录&#xff0c;如果我们在根目录下建立了H5目录&#xff0c;那么我们在发布H5的时候&#xff0c;是需要在manifest.j…

数据恢复与硬盘修理

目录 第1章 基础知识 1.1 数据恢复技术的发展和研究现状 1.2 数据恢复技术的层次与体系 1&#xff0e;网络层 2&#xff0e;网络存储层 DAS NAS 3&#xff0e;磁盘阵列层 4&#xff0e;磁盘层 5&#xff0e;文件系统层 6&#xff0e;文件层 7&#xff0e;覆盖恢复…

越活越“老“越值钱——来喝了这碗孟婆汤吧

目录 一、背景介绍二、思路&方案三、过程1.开头先从小编的行业说起2.扩展到各行各业&#xff0c;从小编的视角和认知的对比3.纵观人类发展和科技发展的对比4.我身边就有越活越"老"越值钱的人5.如何做到这一点的基本逻辑 四、总结 一、背景介绍 对于自己的未来&a…

Java强训day4(选择题编程题)

选择题 接口中的方法是为了让重写编程题 题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a_b sc.nextInt();int b_c sc.nextInt();int ab sc.nextInt();int bc sc.nextInt();for(in…

mysql索引失效

索引失效 1.违反最左前缀法则 查询要从索引的最左前列开始&#xff0c;不能跳过索引中的列 没有违反 违反 部分违反&#xff0c;只有最左边的命中索引 2.查询右边范围的列&#xff0c;不能使用索引 范维列不满足最左前缀 3.索引列上进行运算&#xff0c;索引会失效 改变…

假期刷题打卡--Day15

1、MT1152韩信又生气了 韩信点兵(大于10人)&#xff0c;三个三个一排少1个人&#xff0c;五个五个一排又少1个人&#xff0c;七个七个一排还少1个人。韩信生气了&#xff0c;从别的队伍里调来一个人!这样不管是三个一排五个一排还是七个一排都完美了。问原本最少应该有多少人。…

每日一练 | 华为认证真题练习Day172

1、关于OSPF的ASBR-SUMMARY-LSA中LSA头部他、信息描述错误的是 A. LINK STATE ID表示ASBR的ROUTER ID B. ADVERTISING ROUTER表示该ABR的ROUTER ID C. ADVERTISING ROUTER字段永远不会改变 D. METRIC表示该ABR到达ASBR的OSPF开销 2、关于OSPF外部路由种类描述错误的是 A. …

神经网络进一步学习

一、代价函数 首先引入一些便于稍后讨论的新标记方法&#xff1a;假设神经网络的训练样本有m个&#xff0c;每个包含一组输入x和一组输出y&#xff0c;L表示神经网络层数&#xff0c;表示该层的神经元个数&#xff0c;将神经网络的分类定义为两种情况&#xff1a;二类分类和多类…