当前位置: 首页 > news >正文

【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;
}

在这里插入图片描述

相关文章:

  • 算法沉淀——滑动窗口(leetcode真题剖析)
  • 【01】Linux 基本操作指令
  • 关于达梦认证DCA DCP,TIDB认证PCTA PCTP考试那点事儿
  • 力扣hot100 子集 回溯 超简洁
  • 基于大数据的B站数据分析系统的设计与实现
  • 2024年华为OD机试真题-开源项目热榜-Python-OD统一考试(C卷)
  • 硬件知识(1) 手机的长焦镜头
  • 【supervisor】unix:///tmp/supervisor.sock no such file
  • Pull模式和Push模式
  • 计网Lesson11 - 虚拟机网络环境及socket概述
  • docker 修改镜像存储路径
  • 从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
  • Lombok
  • 如何使用ssh key免密码登录服务器?
  • el-tree基础的树形节点设置节点不能选中高亮出来,对已经选中的节点设置disabled,对当前节点刚选中后设置禁用disabled
  • ----------
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • AWS实战 - 利用IAM对S3做访问控制
  • Docker 笔记(2):Dockerfile
  • E-HPC支持多队列管理和自动伸缩
  • GitUp, 你不可错过的秀外慧中的git工具
  • mockjs让前端开发独立于后端
  • React16时代,该用什么姿势写 React ?
  • Spring框架之我见(三)——IOC、AOP
  • VuePress 静态网站生成
  • 从零开始在ubuntu上搭建node开发环境
  • 对象引论
  • 前端js -- this指向总结。
  • 使用parted解决大于2T的磁盘分区
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 函数计算新功能-----支持C#函数
  • # .NET Framework中使用命名管道进行进程间通信
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #QT(串口助手-界面)
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (C++17) std算法之执行策略 execution
  • (ZT)一个美国文科博士的YardLife
  • (九)信息融合方式简介
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • ****Linux下Mysql的安装和配置
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net web项目 调用webService
  • .NET 快速重构概要1
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET周刊【7月第4期 2024-07-28】
  • @NestedConfigurationProperty 注解用法
  • @Service注解让spring找到你的Service bean
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • []指针
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [dfs] 图案计数
  • [hdu 4405] Aeroplane chess [概率DP 期望]