【C++】图解类和对象(下)

news2024/11/9 0:59:40

图解类和对象(下)


文章目录

  • 图解类和对象(下)
  • 一、初始化列表
    • (1)定义
    • (2)注意事项
    • (3)explicit关键字
    • (4)结论
  • 二、static成员
    • 1.定义
    • 2.特性
  • 三、友元
    • (1)友元函数
    • (2)友元类
  • 四、内部类
    • (1)概念及注意事项
    • (2)理解
  • 总结


一、初始化列表

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
在这里我们引用了初始化列表!!!


(1)定义

初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟
一个放在括号中的初始值或表达式。
在这里插入图片描述


(2)注意事项

在这里插入图片描述

在这里插入图片描述


(3)explicit关键字

代码如下(示例):

int main()
{
   Date d1(2022); // 直接调用构造
   Date d2 = 2022; // 隐式类型转换:构造+拷贝构造+优化--》直接调用构造函数
}

为了避免不必要的隐式类型转换,C++引入了explicit关键字!

代码如下(示例):

explicit Date(int year)
 :_year(year)
 {}

(4)结论

1.const必须在定义的地方初始化,只有一次机会
2.自定义类型成员,推荐使用初始化列表初始化
3.初始化列表可以认为是成员变量定义的地方
4.内置类型也推荐使用初始化列表,当然内置类型在函数体内初始化也没有什么明显的问题
5.统一的建议:能使用初始化列表就使用,使用初始化列表基本没什么毛病
核心:初始化列表是成员定义的地方


二、static成员

1.定义

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用
static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化

2.特性

  1. 静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区
  2. 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明
  3. 类静态成员即可用 类名::静态成员 或者 对象.静态成员 来访问
  4. 静态成员函数没有隐藏的this指针,不能访问任何非静态成员
  5. 静态成员也是类的成员,受public、protected、private 访问限定符的限制
  6. 静态成员函数可以调用非静态成员函数吗?不是,this
  7. 非静态成员函数可以调用类的静态成员函数吗?是,输入整个类

三、友元

友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。
友元分为:友元函数和友元类

(1)友元函数

友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在
类的内部声明,声明时需要加friend关键字。

在这里插入图片描述


(2)友元类

友元这部分主要作为了解内容,等到后期用的时候再进行讲解学习!
在这里插入图片描述


四、内部类

(1)概念及注意事项

概念:如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。
在这里插入图片描述


(2)理解

1.如果类B定义在类A中,访问B时要用 A :: B
在这里插入图片描述


2.如果要计算类A的字节大小,和B没有关系,只和A有关系
在这里插入图片描述


3.B定义在A的里面:(1)要A的类域限制,访问限定符;(2)B天生是A的友元
在这里插入图片描述


总结

以上就是今天要讲的内容,本文介绍类和对象下的知识,包括初始化列表、Static成员、友元等知识!
如果我的作品对你有所帮助,记得点赞加关注,谢谢大家!
在这里插入图片描述

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

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

相关文章

windows一键安装redis7.0.11

下载 下载地址:https://gitcode.net/zengliguang/windows_redis7.0.11_offline_install.git 使用git进行进行clone下载 在电脑桌面或者其他文件夹下 ,鼠标右键点击 选择git clone ,下图中url为下载地址,Directory为本地存储路径&#xff…

【瑞萨RA_FSP】常用存储器介绍

文章目录 一、存储器种类二、 RAM存储器1. DRAM1.1 SDRAM1.2 DDR SDRAM 2. SRAM3. DRAM与SRAM的应用场合 三、非易失性存储器1. ROM存储器1.1 MASK ROM1.2 OTPROM1.3 EPROM1.4 EEPROM 2. FLASH存储器 一、存储器种类 存储器是计算机结构的重要组成部分。存储器是用来存储程序代…

chatgpt赋能python:Python安装Scrapy-提升爬虫效率的关键

Python安装Scrapy - 提升爬虫效率的关键 如果你正在寻找一个强大、高效的爬虫框架,那么Scrapy是你的不二选择。但在使用Scrapy之前,你必须先安装它。 本篇文章将向您介绍如何在Python环境中安装Scrapy,让您能够更快、更方便地运行和调试您的…

chatgpt赋能python:Python怎么安装PyCharm

Python怎么安装PyCharm PyCharm是一款专业的Python集成开发环境(IDE),提供了丰富的功能和工具,能够极大地提高我们的开发效率。但是,在安装PyCharm之前,需要先确保Python已经安装并配置好了。本篇文章将详…

相机标定精度研究

张建贺实验设计 1 外参重复性精度测试: (同内参,不同外参特征点,9选择4,组合) 1 外参几乎没有什么重复性误差??? 只要4对都正确,则刚性匹配基本正确 解释:激光点云到相机 转换本身的刚性…

Diffusion扩散模型学习2——Stable Diffusion结构解析-以文本生成图像为例

Diffusion扩散模型学习2——Stable Diffusion结构解析 学习前言源码下载地址网络构建一、什么是Stable Diffusion(SD)二、Stable Diffusion的组成三、生成流程1、文本编码2、采样流程a、生成初始噪声b、对噪声进行N次采样c、单次采样解析I、预测噪声II、…

转换vmware的vmdk格式为qcow2格式

一、系统环境 操作系统:Win11 虚机系统:VMware Workstation 16 Pro 16.2.3 build-19376536 转换工具:qemu 8.0.2 二、下载安装qemu模拟器 查看qemu版本 Download QEMU - QEMUhttps://www.qemu.org/download/ 下载windows版的安装文件&…

MySQL索引事务(二)

1、索引 1.1、索引的分类 1.1.1、按数据结构分类:Btree,Hash索引,Full-text索引。 InnoDBMylSAMMemmoryBtree索引√√√Hash索引Full-text索引√(MySQl-version5.6.4)√ Btree索引是MySQL中被存储引擎采用最多的索引类型。它适用于全键值、…

chatgpt赋能python:Python编程技巧之复制粘贴技巧

Python编程技巧之复制粘贴技巧 Python作为一种富有表达力的编程语言,已经成为越来越多人的选择。但在编写代码时,有时候我们需要将别人的代码复制粘贴到自己的代码中。如何正确地复制粘贴代码?下面让我们来探讨一下。 复制和粘贴 在复制和…

车载以太网 - 物理层

OSI模型与车载以太网对应关系 OSI标准模型: l、物理层 II、数据链路层 lll、网络层 IV、传输层 V、会话层 VI、表示层 VII、应用层 车载以太网的OSI 参考模型如图所示,该模型中没有对5-7层进行严格的区分;比如SOME/IP、DolP、XCP等协议则是将5、6、7层描…

ML算法——逻辑回归随笔【机器学习】

文章目录 3、逻辑回归3.1、理论部分3.2、sklearn 实现3.3、案例 3、逻辑回归 3.1、理论部分 Logic Regression (LR),逻辑回归的因变量是二分类的,而不是连续的。它的输出是一个概率值,表示输入数据属于某个类别的概率。如果该值为0.8&#x…

Building a Cloud Based Data Warehouse on Google Big Query Using Qlik Compose

Learn how to build a cloud based data warehouse using Qlik Compose on Google Big Query How to Build Data Integration Pipelines with Qlik and Databricks - YouTube Google BigQuery是一个具有成本效益、高度可扩展的无服务器数据仓库,专为业务敏捷性而设…

概率图简介

引言 本文介绍概率图模型的部分基础知识,希望学习完本文之后能更好地理解HMM和CRF模型。 概率论基础 本节简单回顾一下相关的概率论知识,概率论有两条重要的基本规则。 分别为乘法规则(product rule)和加和规则(sum rule),假设有两个随机…

chatgpt赋能python:Python3.9.7安装指南

Python 3.9.7安装指南 Python是一种高级编程语言,得到了越来越多的使用,并且在机器学习、数据科学和网络开发中变得越来越重要。本篇文章将向大家介绍如何安装Python 3.9.7版本。 下载Python 3.9.7 首先,我们需要下载Python 3.9.7。你可以…

chatgpt赋能python:Python怎么安装Flask

Python怎么安装Flask Python是一种高级编程语言,常用于 Web 开发、人工智能、机器学习等领域。同时,Flask也是一个十分著名的Python Web框架,具有灵活、轻量级、易于扩展等特点。那么,如何在Python环境中安装Flask呢?…

chatgpt赋能python:Python安装PySpark:从入门到精通

Python安装PySpark:从入门到精通 PySpark是使用Python编写的Apache Spark API。它提供了一个Python接口来与Spark的分布式计算引擎进行交互。本文将介绍如何在Python中安装PySpark。 环境准备 在安装PySpark之前,您需要先安装以下依赖项: …

chatgpt赋能python:如何安装Python3.4

如何安装Python 3.4 简介 Python是一种流行的编程语言。它易于学习,具有可读性,且适用于多种用例。Python的版本非常多,但是Python 3.4是最新的稳定版本之一。 在本文中,我们将介绍如何更轻松地安装Python 3.4。 步骤 安装Py…

NLP学习笔记七-多层RNN和双向RNN

NLP学习笔记七-多层RNN和双向RNN 接着之前写的博客内容,多层RNN,其实就是在,simple RNN的基础上,再套一层或多层RNN单元。 看如下网络结构图: 上图中A就是表示一个RNN网络,这里,其实有一个疑…

chatgpt赋能python:Python与前端连接:使用Python的Web框架构建后端API

Python与前端连接:使用Python的Web框架构建后端API Python是一种强大的编程语言,越来越受到开发者的欢迎。但是,对于Web开发,Python并不是一种前端语言。那么,如何将Python的后端与前端连接起来?本文将介绍…