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语言中函数名是唯一的,不可以重复定义,当我们利用函数执行,功能相似的函数,我们也不能使用同一个函数,比如说,求整型的函数,不能用来求浮点型、字符型。在C中引入函数重载的概念&a…...
一文读懂SpringBoot整合Elasticsearch(一)
(本篇文章主要介绍Spring Boot如何整合Elasticsearch,包括基本配置、数据操作、搜索功能等方面。) 一、前言 Elasticsearch是一款全文搜索引擎,可用于快速、准确地存储、搜索和分析大量数据。而Spring Boot是一款快速开发框架&a…...
(数论)(枚举)(前缀和)1230. K倍区间
目录 题目链接 一些话 切入点 流程 套路 ac代码 题目链接 1230. K倍区间 - AcWing题库 ~数~啦!我草,又~在~水~字~数~啦!我草,又~在~水&…...
万字带你深入理解 Linux 虚拟内存管理(下)
接上文:万字带你深入理解 Linux 虚拟内存管理(上) 6. 程序编译后的二进制文件如何映射到虚拟内存空间中 经过前边这么多小节的内容介绍,现在我们已经熟悉了进程虚拟内存空间的布局,以及内核如何管理这些虚拟内存区域&…...
【iOS】—— JSONModel源码学习
JSONModel 文章目录JSONModel关于JSONModel的用法initWithDictionary等方法load方法实现load方法调用时机init方法__setup__方法__inspectProperties:方法__doesDictionary方法__importDictionary方法关于JSONModel的用法 可以参考之前写的博客:【iOS】—— JSONMo…...
单片机怎么实现真正的多线程?
所谓多线程都是模拟的,本质都是单线程,因为cpu同一时刻只能执行一段代码。模拟的多线程就是任务之间快速切换,看起来像同时执行的样子。据说最近有多核的单片机,不过成本应该会高很多。对于模拟的多线程,我知道的有两种…...
【LeetCode】剑指 Offer(23)
目录 题目:剑指 Offer 46. 把数字翻译成字符串 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer 46. 把…...
[免费专栏] 汽车威胁狩猎之不应该相信的几个威胁狩猎误区
也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 汽车威胁狩猎专栏长期更新,本篇最新内容请前往: …...
LinuxFTP文件传输服务和DNS域名解析服务
♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放࿰…...
二叉搜索树原理及底层实现
二叉搜索树BST 概念 二叉搜索树又称二叉排序树,它可以是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值;若它的右子树不为空,则右子树上所有节点的值都…...
python自动化办公(一)
本文代码参考其他教程书籍实现。 文章目录文件读写open函数读取文本文件写入文本文件文件和目录操作使用os库使用shutil库文件读写 open函数 open函数有8个参数,常用前4个,除了file参数外,其他参数都有默认值。file指定了要打开的文件名称&a…...
LeetCode - 198 打家劫舍
目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 198. 打家劫舍 - 力扣(LeetCode) 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装…...
简单粗暴的分布式定时任务解决方案
分布式定时任务1.为什么需要定时任务?2.数据库实现分布式定时任务3.基于redis实现1.为什么需要定时任务? 因为有时候我们需要定时的执行一些操作,比如业务中产生的一些临时文件,临时文件不能立即删除,因为不清楚用户是…...
蓝桥杯第五天刷题
第一题:数的分解题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2和 4,一共有多少种不同的分解方法&…...
Java数组的定义和使用(万字详解)
目录 编辑 一. 数组的基本概念 1、什么是数组 2、数组的创建及初始化 1、数组的创建 2、数组的初始化 3、数组的使用 (1)数组中元素访问 (3)遍历数组 二、数组是引用类型 1、初始JVM的内存分布 2、基本类型变量与引用类…...
【SpringBoot】自定义Starter
🚩本文已收录至专栏:Spring家族学习之旅 👍希望您能有所收获 一.概述 在使用SpringBoot进行开发的时候,我们发现使用很多技术都是直接导入对应的starter,然后就实现了springboot整合对应技术,再加上一些简…...
【C陷阱与缺陷】----语法陷阱
💯💯💯 要理解一个C程序,必须理解这些程序是如何组成声明,表达式,语句的。虽然现在对C的语法定义很完善,几乎无懈可击,大门有时这些定义与人们的直觉相悖,或容易引起混淆…...
虹科分享| 关于TrueNAS十问十答
上一篇文章我们向您介绍了虹科新品HK-TrueNAS企业存储,很多小伙伴会疑问到底什么是NAS存储,之前常用的磁盘、磁带属于什么存储架构,NAS存储好在哪里,什么时候使用NAS?今天我们整理了关于TrueNAS的十问十答,…...
Https 笔记
HTTP TLS TLS 的前身是 SSL 非对称加密的核心: 两个密钥(公私) https 需要第三方CA(证书授权中心)申请SSL证书以确定其真实性 证书种包含了特定的公钥和私钥 密钥交换 自己将私钥上锁后发给对方对方也上锁 在还回来…...
【Python+requests+unittest+excel】实现接口自动化测试框架
一、框架结构: 工程目录 二、Case文件设计 三、基础包 base 3.1 封装get/post请求(runmethon.py) 1 import requests2 import json3 class RunMethod:4 def post_main(self,url,data,headerNone):5 res None6 if heade…...
解锁智能告警管理:Keep开源AIOps平台从零到生产实战指南
解锁智能告警管理:Keep开源AIOps平台从零到生产实战指南 【免费下载链接】keep The open-source AIOps and alert management platform 项目地址: https://gitcode.com/GitHub_Trending/kee/keep 在当今复杂的云原生环境中,运维团队每天都要面对海…...
宇树GO2机器人ROS2控制:从零到自主导航的完整指南
宇树GO2机器人ROS2控制:从零到自主导航的完整指南 【免费下载链接】go2_ros2_sdk Unofficial ROS2 SDK support for Unitree GO2 AIR/PRO/EDU 项目地址: https://gitcode.com/gh_mirrors/go/go2_ros2_sdk Unitree GO2 ROS2 SDK是一个专门为宇树科技GO2系列机…...
OpenVSP参数化飞机设计:3个技巧让你从零开始打造专业飞行器
OpenVSP参数化飞机设计:3个技巧让你从零开始打造专业飞行器 【免费下载链接】OpenVSP A parametric aircraft geometry tool 项目地址: https://gitcode.com/gh_mirrors/ope/OpenVSP 你是否梦想设计自己的飞机,却被复杂的CAD软件吓退?…...
Python实战:三大曲线平滑技术对比与场景选型指南
1. 曲线平滑处理的必要性 当你处理传感器数据、金融时间序列或任何带有噪声的曲线时,原始数据往往像一条暴躁的蚯蚓——上下乱窜让人抓狂。我在处理工业传感器数据时就遇到过这种情况:一条本该平滑的温度曲线,因为电磁干扰变成了"心电图…...
3个理由告诉你为什么Mem Reduct是Windows内存优化的最佳选择
3个理由告诉你为什么Mem Reduct是Windows内存优化的最佳选择 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 你是否经…...
开源秘密管理工具 phantom-secrets:本地化安全存储与自动化集成指南
1. 项目概述:一个用于秘密管理的开源工具 在软件开发和运维的日常工作中,秘密(Secrets)的管理一直是个既基础又棘手的问题。无论是数据库密码、API密钥、云服务凭证,还是TLS证书的私钥,这些敏感信息一旦泄露…...
Spring Boot项目集成GitLab OAuth登录保姆级教程(含完整代码)
Spring Boot项目集成GitLab OAuth登录生产级实践指南 企业级应用开发中,统一身份认证是基础架构的关键环节。GitLab作为主流的代码托管平台,其OAuth服务为开发者提供了便捷的第三方登录解决方案。本文将深入探讨如何在Spring Boot项目中实现生产级的GitL…...
HC32F460移植指南:除了代码,你还需要搞定Keil、J-Flash和驱动库这三大件
HC32F460开发环境搭建实战:从工具链配置到驱动库迁移 第一次拿到华大HC32F460开发板时,我对着Keil里找不到的芯片型号和一堆陌生的驱动库文件陷入了沉思。与STM32生态相比,华大MCU的开发环境搭建确实存在不少"坑点"。本文将分享一套…...
3天搞定中文API大全:从菜鸟到高手的完整指南
3天搞定中文API大全:从菜鸟到高手的完整指南 嘿,开发者!你是不是经常为找一个好用的API而烦恼?项目做到一半,突然发现某个API文档全是英文,看得头大?别担心,今天我要给你介绍一个超级…...
NRF52833开发实战:从零构建Keil工程与一键烧录
1. 环境搭建:从零准备NRF52833开发工具链 第一次接触NRF52833开发时,最头疼的就是环境配置。记得我刚开始用Keil调试蓝牙项目时,光是找齐所有安装包就花了整整两天。现在把完整工具链的获取方式和避坑要点整理给你,新手照着做半小…...
