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

C++概述 课堂笔记

函数的重载

在C语言中函数名是唯一的,不可以重复定义,当我们利用函数执行,功能相似的函数,我们也不能使用同一个函数,比如说,求整型的函数,不能用来求浮点型、字符型。在C++中引入函数重载的概念,函数名可以相同,只要函数的参数类型不同或者参数的个数不同。

#include <iostream>
using namespace std;int mymax(int a, int b)
{return a > b ? a : b;
}float mymax(float a, float b)
{return a > b ? a : b;
}double mymax(double a, double b)
{return a > b ? a : b;
}char mymax(char a,char b)
{return a > b ? a : b;
}int main()
{cout << mymax(10, 20) << endl;cout << mymax(3.14, 5.20) << endl;cout << mymax(2.33333333, 5.555555) << endl;cout << mymax('a', 'A') << endl;return 0;
}

在C++中支持函数的重载,允许函数名相同,只需要函数参数的类型不相同或参数的个数不同。它优于C语言的是我们不需要大量记忆功能相同的函数名。比如上面的求最大值的函数,我们只需要记忆mymax是求最大值的函数,如果是C语言我们就需要记忆4个函数名,因为C语言不支持函数的重载,函数名不可以相同。

作用域运算符::

我们在C语言中已经知道了变量的作用域范围

当一个局部和全局变量同时存在的时候,我们优先使用局部变量,那我们又想使用全局变量怎么办,我们加作用域运算符就可以优先使用全局变量了。

#include <iostream>
using namespace std;int a = 100;int main()
{int a = 10;cout << "a=" << a << endl;cout << "::a=" << ::a << endl;return 0;
}

强制类型转换

在C语言中我们也学过强制类型转换,C++也可以使用C语言的强制类型转换,在C++引入新的强制转换的方法就是为了,更加的方便

#include <iostream>
using namespace std;int main()
{float f = 3.14;cout << (int)f << endl;//C语言的写法cout << int(f) << endl;//C++的写法return 0;
}

C++的强制类型转换与C语言的强制类型转换的不同就在,C语言是把要强制类型转换的类型加括号,C++的写法是将我们要强制转换的数据变量括起来。

#include <iostream>
using namespace std;int main()
{float f = 3.14;int a = (int)f + 0.9;int b = int(f + 0.9);int c = (int)(f + 0.9);cout << "a=" << a << " " << "b=" << b << " " << "c=" << c << endl;return 0;
}

如果我们要强制类型转换f+0.9,在C语言需要两个括号,而C++只需要一个括号。

运算符new和delete

C语言中我们使用malloc,realloc来申请动态的内存空间,在C++中我们使用new来申请空间
C语言使用free释放内存空间,而C++使用delete来释放空间

我们先写一个程序看看new和delete是怎么使用的

#include <iostream>
using namespace std;int main()
{int* p = new int;//公式:  指针变量名=new 类型名。 该行代码的作用是申请一个整型空间,然后这个整型空间的地址存在p指针中*p = 100;cout << *p << endl;delete p;//释放申请的整型空间,防止内存泄露return 0;
}

那么我们假如要申请很多个整型空间怎么做呢

#include <iostream>
#include <stdio.h>
using namespace std;int main()
{int* p = new int[10];//向内存申请10个整型空间,首地址给p    公式:指针变量名=new 类型名[size]  size是申请的个数if (p == NULL)//判断是否申请空间成功{perror("new:");//打印错误信息return 1;//结束程序}for (int i = 0; i < 10; i++)//输入10个元素{cin >> p[i];}for (int i = 0; i < 10; i++)//输出{cout<< p[i]<<" ";}delete []p;//释放我们数组的空间 公式: delete [] 指针变量名return 0;
}

#include <iostream>
using namespace std;int main()
{int* p = new int(100);//申请一个整型空间,并且将100赋值给*pcout << *p << endl;delete p;return 0;
}

C语言的动态内存申请,malloc、realloc申请成功返回的是void*的指针,我们还需要进行类型转换。而new开辟的内存空间成功返回的直接是首地址,不需要强制类型转换,malloc也需要进行字节大小的计算,所以,C++中new申请动态内存空间更加便利。

相关文章:

C++概述 课堂笔记

函数的重载在C语言中函数名是唯一的&#xff0c;不可以重复定义&#xff0c;当我们利用函数执行&#xff0c;功能相似的函数&#xff0c;我们也不能使用同一个函数&#xff0c;比如说&#xff0c;求整型的函数&#xff0c;不能用来求浮点型、字符型。在C中引入函数重载的概念&a…...

一文读懂SpringBoot整合Elasticsearch(一)

&#xff08;本篇文章主要介绍Spring Boot如何整合Elasticsearch&#xff0c;包括基本配置、数据操作、搜索功能等方面。&#xff09; 一、前言 Elasticsearch是一款全文搜索引擎&#xff0c;可用于快速、准确地存储、搜索和分析大量数据。而Spring Boot是一款快速开发框架&a…...

(数论)(枚举)(前缀和)1230. K倍区间

目录 题目链接 一些话 切入点 流程 套路 ac代码 题目链接 1230. K倍区间 - AcWing题库 &#xff5e;数&#xff5e;啦&#xff01;我草&#xff0c;又~在&#xff5e;水&#xff5e;字&#xff5e;数&#xff5e;啦&#xff01;我草&#xff0c;又~在&#xff5e;水&…...

万字带你深入理解 Linux 虚拟内存管理(下)

接上文&#xff1a;万字带你深入理解 Linux 虚拟内存管理&#xff08;上&#xff09; 6. 程序编译后的二进制文件如何映射到虚拟内存空间中 经过前边这么多小节的内容介绍&#xff0c;现在我们已经熟悉了进程虚拟内存空间的布局&#xff0c;以及内核如何管理这些虚拟内存区域&…...

【iOS】—— JSONModel源码学习

JSONModel 文章目录JSONModel关于JSONModel的用法initWithDictionary等方法load方法实现load方法调用时机init方法__setup__方法__inspectProperties:方法__doesDictionary方法__importDictionary方法关于JSONModel的用法 可以参考之前写的博客&#xff1a;【iOS】—— JSONMo…...

单片机怎么实现真正的多线程?

所谓多线程都是模拟的&#xff0c;本质都是单线程&#xff0c;因为cpu同一时刻只能执行一段代码。模拟的多线程就是任务之间快速切换&#xff0c;看起来像同时执行的样子。据说最近有多核的单片机&#xff0c;不过成本应该会高很多。对于模拟的多线程&#xff0c;我知道的有两种…...

【LeetCode】剑指 Offer(23)

目录 题目&#xff1a;剑指 Offer 46. 把数字翻译成字符串 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 题目&#xff1a;剑指 Offer 46. 把…...

[免费专栏] 汽车威胁狩猎之不应该相信的几个威胁狩猎误区

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 汽车威胁狩猎专栏长期更新&#xff0c;本篇最新内容请前往&#xff1a; …...

LinuxFTP文件传输服务和DNS域名解析服务

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放&#xff0…...

二叉搜索树原理及底层实现

二叉搜索树BST 概念 二叉搜索树又称二叉排序树&#xff0c;它可以是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a;若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值&#xff1b;若它的右子树不为空&#xff0c;则右子树上所有节点的值都…...

python自动化办公(一)

本文代码参考其他教程书籍实现。 文章目录文件读写open函数读取文本文件写入文本文件文件和目录操作使用os库使用shutil库文件读写 open函数 open函数有8个参数&#xff0c;常用前4个&#xff0c;除了file参数外&#xff0c;其他参数都有默认值。file指定了要打开的文件名称&a…...

LeetCode - 198 打家劫舍

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 题目描述 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装…...

简单粗暴的分布式定时任务解决方案

分布式定时任务1.为什么需要定时任务&#xff1f;2.数据库实现分布式定时任务3.基于redis实现1.为什么需要定时任务&#xff1f; 因为有时候我们需要定时的执行一些操作&#xff0c;比如业务中产生的一些临时文件&#xff0c;临时文件不能立即删除&#xff0c;因为不清楚用户是…...

蓝桥杯第五天刷题

第一题&#xff1a;数的分解题目描述本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。把 2019 分解成 3 个各不相同的正整数之和&#xff0c;并且要求每个正整数都不包含数字 2和 4&#xff0c;一共有多少种不同的分解方法&…...

Java数组的定义和使用(万字详解)

目录 ​编辑 一. 数组的基本概念 1、什么是数组 2、数组的创建及初始化 1、数组的创建 2、数组的初始化 3、数组的使用 &#xff08;1&#xff09;数组中元素访问 &#xff08;3&#xff09;遍历数组 二、数组是引用类型 1、初始JVM的内存分布 2、基本类型变量与引用类…...

【SpringBoot】自定义Starter

&#x1f6a9;本文已收录至专栏&#xff1a;Spring家族学习之旅 &#x1f44d;希望您能有所收获 一.概述 在使用SpringBoot进行开发的时候&#xff0c;我们发现使用很多技术都是直接导入对应的starter&#xff0c;然后就实现了springboot整合对应技术&#xff0c;再加上一些简…...

【C陷阱与缺陷】----语法陷阱

&#x1f4af;&#x1f4af;&#x1f4af; 要理解一个C程序&#xff0c;必须理解这些程序是如何组成声明&#xff0c;表达式&#xff0c;语句的。虽然现在对C的语法定义很完善&#xff0c;几乎无懈可击&#xff0c;大门有时这些定义与人们的直觉相悖&#xff0c;或容易引起混淆…...

虹科分享| 关于TrueNAS十问十答

上一篇文章我们向您介绍了虹科新品HK-TrueNAS企业存储&#xff0c;很多小伙伴会疑问到底什么是NAS存储&#xff0c;之前常用的磁盘、磁带属于什么存储架构&#xff0c;NAS存储好在哪里&#xff0c;什么时候使用NAS&#xff1f;今天我们整理了关于TrueNAS的十问十答&#xff0c;…...

Https 笔记

HTTP TLS TLS 的前身是 SSL 非对称加密的核心&#xff1a; 两个密钥&#xff08;公私&#xff09; https 需要第三方CA&#xff08;证书授权中心&#xff09;申请SSL证书以确定其真实性 证书种包含了特定的公钥和私钥 密钥交换 自己将私钥上锁后发给对方对方也上锁 在还回来…...

【Python+requests+unittest+excel】实现接口自动化测试框架

一、框架结构&#xff1a; 工程目录 二、Case文件设计 三、基础包 base 3.1 封装get/post请求&#xff08;runmethon.py&#xff09; 1 import requests2 import json3 class RunMethod:4 def post_main(self,url,data,headerNone):5 res None6 if heade…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…...

LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考

目录 lua脚本 记录流水 记录流水的作用 流水什么时候删除 我们在做库存扣减的时候&#xff0c;显示基于Lua脚本和Redis实现的预扣减 这样可以在秒杀扣减的时候保证操作的原子性和高效性 lua脚本 // ... 已有代码 ...Overridepublic InventoryResponse decrease(Inventor…...