C++从零到满绩——入门基础and类和对象(上)

news2024/11/23 7:02:29

目录

1>>前言

 2>>函数重载

3>>引用

3.1>>引用的概念

3.2>>引用三大特性

3.3>>引用的使用

3.4>>const引用

3.5>>指针与引用的关系

4>>inline内联函数

5>>nullptr 

6>>类和对象(上)——类的定义

6.1>>类定义格式

6.2>>访问限定符

6.3>>类域

7>>实质化 

7.1>>概念

7.2>>对象大小

8>>this指针

9>>结语


1>>前言

        上节课学习了命名空间、C++的第一个文件、输入输出流还有默认参数的概念和用法,中间因为学校的一些事情和比赛耽搁了一下更新,不好意思宝子们,小编在这说声抱歉。

        今天我们来学习基础篇(包括函数重载、引用、inline、nullptr)and类和对象(上)(包括类的定义、实例化、this指针)。话不多说,准备上高速。

ps:如果有觉得小编哪里需要改进的欢迎指出,做出完美的C++篇章肯定少不了各位精神股东的支持啦,谢谢大家~

 2>>函数重载

        C++支持同一个作用域(局部、全局、静态)出现同名函数。有三种情况:

1.这些函数形参顺序不同。

2.这些参数个数不同。

3.这些参数类型不同

C++会对同名函数进行函数重载,通俗点说就是自动识别类型并且匹配对应函数使用,cin和cout本质上也是使用函数重载。

3>>引用

3.1>>引用的概念

        引用:引用不是新定义的变量,而是给已知变量取别名,它不占用而外内存空间,而是和被引用变量共用一块内存空间。引用相当于现实生活中的别名(小名),例如我朋友叫李帅(化名),我们可以叫他小帅,小李,李哥等,本质上都是李帅。引用和C的指针差不多,可以说升级版。

格式:类型& 引用别名 = 被引用对象;

如上图,b就是a的别名,b和a共用一块内存空间,因此值相同(这两本质上是一个东西)

如上图,d还是a,举个例子,孙悟空,弼马温,行者孙都是同一个人。

3.2>>引用三大特性

        1.引用定义时必须初始化:也就是int& b必须指向某个变量(不能只有小名,没名字)。

        2.一个变量可以有多个引用:如3.1举的例子。

        3.引用一旦引用一个变量(实体),就不能在引用其他实体:

例如int& b=a,b=c;并不能将b更改为c的别名,只能将c的值赋值给b(a)。

3.3>>引用的使用

        引用主要用于减少拷贝提高效率改变引用对象的同时改变被引用对象

        如下图:在传a,b时可以那它们的别名x,y接受,本质上x与a指向同一块地址空间,b与y指向同一块地址空间。怎么样,是不是感觉比C的指针简单很多

当然也可以对指针变量进行引用,别忘记它格式:类型& 引用别名 = 被引用对象;

3.4>>const引用

        使用const引用时,需要注意一个新词汇——权限,如下图:

归纳就是权限可以小于等于。知道了权限的概念,来试试题目吧:int& a=b*10;问:这个编译能过吗?

答案:不行,右边表达式结果保存在一个临时变量中,这个临时变量是常量,而左边的是动态变量,动态变量是常量的别名涉及权限放大,因此pass~!

注意:类型转换也会产生临时变量,都具有常属性。例如:double b=3.14;int& a=b;这就不行!!!

3.5>>指针与引用的关系

        指针和引用相辅相成,各有其特,互相不可替代!!!

1.语法上别名不开空间;指针要开辟4/8字节空间。

2.引用必须初始化;指针不用。

3.引用引用一个对象后不能改变它的指向;指针可以改变指向,较为灵活。

4.引用可以直接访问被引用对象;指针需要解引用。

5.sizeof结果不同:引用为引用类型大小,指针固定4字节或者8字节。

6.引用比指针安全,野引用少

4>>inline内联函数

       内联函数inline其实就是C语言宏函数的升级替代版本,它比较适合频繁调用的短小函数(通常不超过十行)如下图:

5>>nullptr 

        在C语言中,NULL其实会遇到一些麻烦,例如:传NULL想调用f(int*)函数,却因为NULL值为0调用了f(int x)。

因此升级版本NULL出现了,它只允许被转换为指针类型,也就是空指针,而不能转换成整数类型。

6>>类和对象(上)——类的定义

6.1>>类定义格式

        类是C语言中struct结构体的升级版。class是类的关键字。类中内容为类成员。类中的变量称为类的属性or成员变量。类中的函数称为类的方法or成员函数。在C++中struct也被升级为了类,可以跟C一个用法。

        通常习惯在成员变量前面加上 _或者 m开头。定义在类面的成员函数默认为inline。

6.2>>访问限定符

        分为三个分别是:public公共的、protected保护的、private私有的。保护和私有现阶段看成一个用法,后续学深入了才能体现出区别~

它们的范围就是从限定符出现开始,到下一个限定符或者“}”出现为止。

一般成员变量都是用private/protected,给大家使用的函数才会用public。

注意:class定义成员是默认权限为private,而struct默认为public。

6.3>>类域

        可以理解为跟命名空间一个用法。如图:定义和声明不在一起时,需要指定类域。

7>>实质化 

7.1>>概念

        用类创建对象的过程称为“类实例化出对象”。在没有实质化时成员变量都只是声明,只有实质化才会被分配空间。如下图:就实例化出了两个对象。

7.2>>对象大小

        跟struct差不多,都需要用到内存对齐,区别就是,没有成员变量时,类的大小为1。证明使用过这个类。如下图:sizeof(d1)=12;

8>>this指针

        如下图:d1和d2都使用的Init,那编译器怎么知道用哪个参数呢?这里就有一个隐藏的this指针解决。往下看~

如下图:

这里就能确定调用的是谁~~

9>>结语

        今日份C++入门就先到这里啦,来总结一下:主要讲了基础篇(包括函数重载、引用、inline、nullptr)and类和对象(上)(包括类的定义、实例化、this指针。感兴趣的宝子们欢迎持续订阅小编,小编在这里谢谢宝子们啦~C++的学习很陡,时而巨难时而巨简单,希望宝子和小编一起坚持下去~你们的三连是我的动力,感谢支持~

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

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

相关文章

DDPM与DDIM中的采样

在深度生成模型中,采样(Sampling)指的是根据模型生成新样本的过程。在扩散模型(Diffusion Models)中,采样的关键是从高斯噪声逐步还原出原始数据。让我们分别探讨 DDPM 和 DDIM 的采样过程,以及…

python oa服务器巡检报告脚本的重构和修改(适应数盾OTP)有空再去改

Two-Step Vertification required: Please enter the mobile app OTPverification code: 01.因为巡检的服务器要双因子认证登录,也就是登录堡垒机时还要输入验证码。这对我的巡检查服务器的工作带来了不便。它的机制是每一次登录,算一次会话…

【Web前端】创建我的第一个 Web 表单

Web 开发中,表单是不可或缺的组成部分。无论是用户注册、登录还是反馈收集,表单都是与用户交互的重要方式。 什么是 Web 表单? Web 表单是一种用于收集用户输入数据的界面元素。它们允许用户在浏览器中输入信息并提交这些信息到服务器。Web …

JavaWeb后端开发知识储备2

目录 1.HttpClient 2.微信小程序开发 3.Spring Cache 1.HttpClient 简单来说,HttpClient可以通过编码的方式在Java中发送Http请求 2.微信小程序开发 微信小程序的开发本质上是前端开发,对于后端程序员来说了解即可 3.Spring Cache Spring Cache 是…

力扣刷题--21.合并两个有序链表

I am the best !!! 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2…

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的虎鲸旅游攻略网的设计与实现

开题报告 随着旅游业的快速发展和互联网的普及,越来越多的人选择通过网络平台获取旅游攻略和分享旅行经验。传统的旅游攻略获取方式往往依赖于纸质书籍或零散的在线资源,这种方式不仅信息更新滞后,而且缺乏互动性和个性化推荐。因此&#xf…

排序算法:直接插入排序,希尔排序,选择排序,快速排序,堆排序,归并排序

1.直接插入排序 基本思想:把待排序的数按照大小逐个插入到前面已经排序好的有序序列中,直到所有的都插入完为止,得到一个新的有序序列。 如图所示,当插入第i个(i>1)元素的时候,前面的arr[0]…

《OpenCV 图像基础操作全解析:从读取到像素处理与 ROI 应用》

简介:本文详细介绍了使用 OpenCV 进行图像相关操作的基础知识与实践示例,涵盖图像读取(包括不同读取方式及对应效果)、灰度值概念与图像矩阵存储特点、通道相关知识(如 BGR、通道拆分与合并),还…

使用卡尔曼滤波器估计pybullet中的机器人位置

⭐️ 卡尔曼滤波 卡尔曼滤波是一种递归算法,用于从具有噪声的观测中估计系统状态。它特别适合用于线性、高斯动态系统。 笔者之前写过一篇博文介绍卡尔曼滤波器《boss:整个卡尔曼滤波器的简单案例——估计机器人位置》,本文手动实现一个卡尔曼滤波器并…

【尚筹网】二、环境搭建一

【尚筹网】二、环境搭建一 环境搭建总体目标创建工程系统架构图工程创建计划创建空项目创建对应的 Maven 模块建立模块间的依赖 创建数据库基于 Maven 的 Mybatis 的逆向过程配置 pom创建 generatorConfig.xml执行逆向工程操作的 maven 指令将逆向工程生成的资源归位 父工程依赖…

全面解析 JMeter 后置处理器:概念、工作原理与应用场景

在性能测试中,Apache JMeter是一个非常流行的工具,它不仅能够模拟大量用户进行并发访问,还提供了丰富的扩展机制来满足各种复杂的测试需求。后置处理器(Post-Processor)是JMeter中非常重要的组件之一,用于在…

数字IC后端实现时钟树综合系列教程 | Clock Tree,Clock Skew Group之间的区别和联系

Q: Clock,Clock Tree和Skew Group有何区别?Innovus CCOPT引擎是如何使用这些的? Clock是时序约束SDC中的时钟定义点。 create_clock -name clk_osc -period $period_24m [get_ports xin_osc0_func] 时钟树综合(Clock Tree Synthesis)之前应…

基于零相差前馈补偿的 PID 控制

零相差前馈补偿是一种结合前馈补偿与反馈控制的策略,旨在提高控制系统对参考信号的跟踪精度。通过设计合理的前馈补偿器,使得系统对参考输入实现零相位差的跟踪,同时利用 PID 控制器保证系统的稳定性和动态性能。 1. 原理概述 目标&#xff…

odoo18中模型的常用字段类型

字段的公共属性: Char 字符类型,对应数据库中varchar类型,除了通用类型外接收另外两个参数: size: 字符长度,超出的长度将被截断 trim: 默认True,是否字段值应该被去空白。 Text 文本类型,对应数据库…

Wireshark抓取HTTPS流量技巧

一、工具准备 首先安装wireshark工具,官方链接:Wireshark Go Deep 二、环境变量配置 TLS 加密的核心是会话密钥。这些密钥由客户端和服务器协商生成,用于对通信流量进行对称加密。如果能通过 SSL/TLS 日志文件(例如包含密钥的…

鸿蒙生态崛起

1.鸿蒙生态:开发者的新蓝海 从开发者角度看,鸿蒙生态带来了巨大机遇。其分布式能力实现了不同设备间的无缝体验,如多屏协同,让应用能跨手机、平板、智能穿戴和车载设备流畅运行。开发工具也有显著提升,方舟编译器等极大…

【MySQL】精细讲解:数据库内置函数深度学习解析

前言:本节内容讲述mysql里面的函数的概念, 在mysql当中, 内置了很多函数工作。 这些函数丰富了我们的操作。 比如字符串函数、数据函数以及一些其他函数等等。 ps:友友们学习了表的基本操作后就可以观看本节内容啦! 目录 日期函数 current_…

亚信安全与飞书达成深度合作

近日,亚信安全联合飞书举办的“走近先进”系列活动正式走进亚信。活动以“安全护航信息化 共筑数字未来路”为主题,吸引了众多数字化转型前沿企业的近百位领导参会。作为“走近先进”系列的第二场活动,本场活动更加深入挖掘了数字化转型的基础…

[less] Operation on an invalid type

我这个是升级项目的时候遇到的,要从 scss 升级到 less,然后代码中就报了这个错误 我说一下代码的错误过程,但是这里没有复现,因为我原本报错的代码要复杂很多,而且是公司代码,不方便透露,这是我…

“iOS profile文件与私钥证书文件不匹配”总结打ipa包出现的问题

目录 文件和证书未加载或特殊字符问题 证书过期或Profile文件错误 确认开发者证书和私钥是否匹配 创建证书选择错误问题 申请苹果 AppId时勾选服务不全问题 ​总结 在上线ios平台的时候,在Hbuilder中打包遇见了问题,生成ipa文件时候,一…