C++类和对象(1)

news2024/10/7 15:24:40

C++类和对象(1)

  • C++新关键字及语法
    • 引用
      • 引用的底层原理
      • 引用使用的注意事项
    • auto
    • 范围for
  • C++结构体新特性
  • C++类的特性
  • C++类与结构体区别
  • 构造函数
    • 定义
    • 调用
  • 析构函数
    • 调用

C++新关键字及语法

引用

引用是C++加入的新类型,引用是变量的别名,在整体上不会开辟空间,引用的出现让C++更加安全。

引用的底层原理

引用的底层是一个常量指针,可以通过反汇编查看
在这里插入图片描述
在底层引用和指针的汇编指令一模一样,就可知引用的底层是指针。
如何证明是常量指针呢?
引用不能像指针一样改变指向
在这里插入图片描述

引用使用的注意事项

1.引用必须初始化。
2.引用变量在引用后其的权限不能放大。
在这里插入图片描述
3.引用不能改变指向。
4.引用作为返回值传递会有无法预料的错误。

auto

auto声明的变量可以自动识别数据的类型,在类型十分复杂的时候可以使用auto简化,增加代码可读性。
同时要注意,auto不能作为函数的参数类型,返回值类型,且不能开辟数组

范围for

范围for是一个语法糖,它可以遍历可迭代的数据,以数组举例。
在这里插入图片描述
范围for的作用是将可迭代的变量(如上图arr数组),从头开始,将每一个数据赋值给e,直到数组到头,范围for要求可迭代的变量不能是一个指针

C++结构体新特性

C++结构体完全兼容C语言结构体,同时也为C语言结构体添加了许多新的特性

1.C++结构体内可以写函数了
在这里插入图片描述
2.在定义结构体的时候可以直接使用结构体的名字。

C++结构体几乎和类相同,当然也有不同处。

C++类的特性

C++类中不仅可以定义数据,还可以定义函数,同时有访问权限来确定外部是否能直接访问到类中的成员,默认情况下,类中成员的访问权限为私有
任何一个类都会存在一个指向自己的指针this,由于使用频繁,所有被C++设为了C++的关键字之一,在类中的所有函数本质都隐式的传递了this指针
类的初始化是编译器调用类的构造函数,要注意,调用无参的构造函数不能加括号,否则会与函数的声明冲突
类中定义的函数不占对象的内存空间,函数都在代码段处,同时类在内存中的存储和结构体一样遵循内存对齐。
类中被定义的函数如果行数小,则会被编译器默认为内联函数。

C++类与结构体区别

1.类中的成员访问权限默认为私有,而结构体成员访问权限默认为共有。
2.类和结构体的初始化不同,本质是结构体没有默认的构造函数。

构造函数

构造函数是为了初始化类的函数,构造函数有以下特点

1.构造函数没有返回值。
2.构造函数可以重载。
3.任何类都有一个默认的无参的构造函数。

定义

1.构造函数可以构成重载。
2.只要定义了一个构造函数,系统自带的默认构造函数就不存在了。
3.只要在调用的过程中可以不传递参数的构造函数都是默认无参的构造函数。

调用

1.对于内置类型,调用默认的无参构造函数时不会被初始化而自定义类型则会调用其自身的默认无参构造函数
2.为了解决调用默认无参构造函数时内置类型不会初始化的情况,C++11后支持成员变量缺省值。在这里插入图片描述

析构函数

析构函数在变量的声明周期结束之后,清理变量所占用的空间。

1.析构函数无返回值。
2.析构函数不能接收参数,在变量的生命周期结束后自动调用。
3.不写析构函数默认存在一个无参的析构函数,对于内置类型,调用系统默认的无参构造函数时不会被初始化而自定义类型则会调用其自身的默认无参构造函数

调用

系统在变量生命周期结束后自动调用。

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

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

相关文章

华为OD机试 - TLV格式 - 逻辑分析(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

LeetCode:2316. 统计无向图中无法互相到达点对数(C++)

目录 2316. 统计无向图中无法互相到达点对数 题目描述: 实现代码与解析: 并查集 原理思路: 2316. 统计无向图中无法互相到达点对数 题目描述: 给你一个整数 n ,表示一张 无向图 中有 n 个节点,编号为…

stable diffusion如何解决gradio外链无法开启的问题

问题确认 为了确认gradio开启不了是gradio库的问题还是stable diffusion的问题,可以先执行这样一段demo代码 import gradio as grdef greet(name):return "Hello " name "!"demo gr.Interface(fngreet, inputs"text", outputs&q…

Spring Cloud 之 Sentinel简介与GATEWAY整合实现

简介 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 熔断 …

Damask使用指南-Hcp结构(镁(考虑孪晶))孪晶如何加入

1,首先利用geom布种子,种子数为40,模型空间尺寸为64*64*1(表示二维平面问题)代码: 2,根据布种区域生成voronoi镶嵌的晶体结构 代码: 3 检查结构是否正确生成 4,利用dama…

61 不同路径

不同路径 重点:从左上角移动到右下角,m-1次向右,n-1次向下题解1 DP降维——滚动数组 题解2 求解组合 C m n − 2 m − 1 C^{m-1}_{mn-2} Cmn−2m−1​的值 一个机器人位于一个 m x n 网格的 左上角 (起始点在下图中标记为 “St…

自己动手写编译器:c 语言模板中的输入模块设计

使用过“框架”的同学都能感受到“框架”带来的方便。所谓”框架“本质上就是一系列代码安排帮助我们完成脏活累活,或者复杂的工作流程后,把处理结果交给我们提供的代码。本节我们要完成的 c 语言模板也是一个框架,它也需要做一系列脏活累活&…

鲲鹏+麒麟V10 mysql8.0适配

检查是否已安装数据库服务 for i in rpm -qa | grep mysql;do rpm -e --nodeps $i;done yum源地址: http://repo.mysql.com/yum/mysql-8.0-community/el/8/aarch64/ 配置yum源: 将mysql相关的rpm包都下载到指定文件里,留作以后考用 yum reins…

UE4 距离场

在项目设置的渲染模块可打开距离场 把该节点连上,该节点的意思是,距离表面越近,材质显示值为0 不接近表面时: 接近表面时 可勾选该值即可看到距离场具体效果: 未接触表面时: 接触表面时: 产生…

2024年仁爱学院专升本招生专业对应范围专业目录更新的通知

天津仁爱学院2024年高职升本科招生专业对应范围专业目录 为了更好的进行天津仁爱学院专升本工作,动画专业不分文理进行录取。为了进一步提升录取专业的培养需要,请同学们复习专业课时加强专业课学习,请同学们在报考时关注天津仁爱学院招生章…

DLP是如何防止数据泄露的?

根据相关调查数据,未来五年全球企业数据泄露防护(DLP)市场预计将以21.03%的复合年增长率高速增长,到2026年市场规模将达到62.65亿美元。 PC访问地址:获取详细资料 https://isite.baidu.com/site/wjz012xr/2eae091d-1b…

2023年金九银十面经,假的今年没有金九银十

24岁的我选择了裸辞 前言 说实话选择裸辞后很迷茫,但是又不想在原本的公司上班,目前处于昏昏沉沉的状态,工作也是混一天是一天,没有了什么明确的目标,不知道屏幕前的你们有没有这种感觉,目前想着休息一段时间&#xff…

基础框架 Spring

引言 我们常说,Java 程序员不会 Spring,那还叫 Java 程序员吗?由此可见Spring在Java领域的重要性,本章我们就来谈谈 Spring 到底是何方神圣? 一、Spring 核心概念(重要) 1、Spring 是什么&am…

RGB彩色图、Depth深度图

💦彩色图,深度图——》信息缺乏。如,颜色相近导致位置信息丢失 💦深度图——》相近深度的物体,因为颜色或纹理的丢失,导致难区分 深度图并不可以直接使用, 因为深度图只能反映出了物体在三维空…

Oracle数据库完整卸载的完整步骤

时间:2023-03-15来源:系统城装机大师作者:佚名 1、停止所有Oracle服务 进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止。 快捷键:ctrlshiftesc打开任务管理器 文章来源 Or…

PACS(Picture Archiving and Communications System)图像存储与传输系统源码

PACS(Picture Archiving and Communications System)——图像存储与传输系统,和医院信息化及数字化的目标紧密关联,它是专门为现代化医院的影像管理而设计的包括数字化医学图像信息的采集、显示、处理、存储、诊断、输出、管理、查…

蓝牙资讯|AirPods Pro 2推送新固件,苹果Find My功能受到好评

苹果公司今天面向采用 Lightning 端口和 USB-C 端口的 AirPods Pro 2 耳机,更新推出了内部编号为 6A305 的全新固件,高于 10 月 10 日发布的 6A303 更新。 苹果官方并没有公布固件的更新日志,目前尚不清楚具体引入了哪些新功能、新特性。苹…

【Rust 易学教程】学前准备:Cargo, 你好

当你开始学习 Rust 时,很快就会遇到 Cargo,它是 Rust 生态系统中用于构建和运行 Rust 应用程序的标准工具。在 《Rust 易学教程》 首篇中,我会简要概述一下 Cargo 是什么,以及它如何适应更广泛的生态系统。 安装 请按照 https:/…

[C++]3.类和对象下(this指针补充)+ 类和对象中构造函数和析构函数。

类和对象下(this指针补充) 类和对象中构造函数和析构函数 一.this补充:1.概念总结:2.两个问题: 二.构造函数和析构函数:一.类的默认构造:1.初始化和清理:2.拷贝复制:3.取…

数据结构: AVL树

目录 1.AVL树的概念 2.AVL树的模拟实现 AVL树的结构定义 插入 对平衡因子的讨论 旋转 对旋转情况的讨论 1.单旋 1.1左单旋 1.2右单旋 2.双旋 2.1左右双旋 2.2右左双旋 检查是否是AVL树 1.AVL树的概念 当向二叉搜索树中插入新结点后,如果能保证每个结点…