C++ 基础(类和对象下)

目录

一. 再探构造函数

1.1. 初始化列表(尽量使用列表初始化)

二. static成员

2.1static成员初始化

三.友元

3.1友元:提供了⼀种 突破类访问限定符封装的方式.

四.内部类

4.1如果⼀个类定义在另⼀个类的内部,这个内部类就叫做内部类。

五.匿名对象

5.1匿名对象生命周期只在当前⼀行


一. 再探构造函数

以前:之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值。

现在:构造函数初始化还有⼀种方式,就是初始化列表,每个"成员变量"后面跟⼀个放在括号中的初始值或表达式。

注意:(每个成员变量 在初始化列表只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。)

1.1. 初始化列表(尽量使用列表初始化)

1.引用成员变量,const成员变量,&引用,自定义类型没有默认构造的类类型变量必须放在初始化列表位置进行初始化,否则会编译报错。

const成员变量::

自定义类型::

&引用::

注意(初始化列表中 按照成员变量 在类中 声明顺序 进行初始化!!!,跟成员在 初始化列表出现的的先后顺序 无关。建议声明顺序和初始化列表顺序保持⼀致。)


二. static成员

2.1static成员初始化

用static修饰的成员变量,称之为静态成员变量,静态成员变量 ⼀定要在 类外 进行初始化

1.静态成员变量为所有类对象所共享,不属于某个具体的对象,不存在对象中,存放在静态区
2.用static修饰的成员函数,称之为静态成员函数,静态成员函数没有this指针。 


三.友元

3.1友元:提供了⼀种 突破类访问限定符封装的方式.

友元分为:友元函数和友元类。

外部友元函数可访问类的私有和保护成员,友元函数仅仅是⼀种声明,他不是类的成员函数。

友元函数:

友元类:

注意:(友元类的关系是单向的,不具有交换性,比如 A类是B类的友元,但是B类不是A类的友元友元类关系不能传递,如果A是B的友元,B是C的友元,但是A不是B的友元。)
有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用
 


四.内部类
 

4.1如果⼀个类定义在另⼀个类的内部,这个内部类就叫做内部类。


4.2 内部类默认是外部类的友元类

内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考
虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其
他地方都用不了。
 


五.匿名对象


5.1匿名对象生命周期只在当前⼀行

⼀般临时定义⼀个对象当前用⼀下即可,就可以定义匿名对象


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

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

相关文章

2024.7.24 作业

1.二叉树的创建、遍历自己实现一遍 bitree.h #ifndef BITREE_H #define BITREE_H#include <myhead.h>typedef char datatype;typedef struct Node {datatype data;struct Node *left_child;struct Node *right_child; }Node,*BiTreePtr;//创建二叉树 BiTreePtr tree_cr…

我在百科荣创企业实践——简易函数信号发生器(5)

对于高职教师来说,必不可少的一个任务就是参加企业实践。这个暑假,本人也没闲着,报名参加了上海市电子信息类教师企业实践。7月8日到13日,有幸来到美丽的泉城济南,远离了上海的酷暑,走进了百科荣创科技发展有限公司。在这短短的一周时间里,我结合自己的教学经验和企业的…

【Java语法基础】9.异常处理

9. 异常处理 Error是程序无法处理的错误&#xff0c;出现时线程被JVM终止。 Exception&#xff0c;指的是程序运行时可以处理的异常。其继承关系如下表&#xff1a; 运行时异常&非运行时异常 运行时异常 都是RuntimeException类及其子类异常&#xff0c;如NullPointerE…

java中涉及到的基础数据结构

1. BST(二叉搜索树),AVL(平衡二叉树)、RBT(红黑树) 二叉查找树(BST) 左结点小于根节点&#xff0c;右结点大于根节点的一种排序树&#xff0c;也叫二叉搜索树。也叫BST&#xff0c;英文Binary Sort Tree。 二叉查找树比普通树查找更快&#xff0c;查找、插入、删除的时间复杂…

模拟实现c++中的string

c内置string库的相关函数&#xff1a;string - C Reference 目录 一string类构造&#xff0c;拷贝构造和析构&#xff1a; 二string内正向迭代器实现&#xff1a; 三赋值运算符重载实现&#xff1a; 四reserve&#xff0c;empty&#xff0c;clear实现&#xff1a; 五push_b…

动手学深度学习——6.循环神经网络

1.序列模型 处理序列数据需要统计工具和新的深度神经网络架构。 为了简单起见&#xff0c;我们以 图8.1.1所示的股票价格&#xff08;富时100指数&#xff09;为例。 图8.1.1 近30年的富时100指数 其中&#xff0c;用&#x1d465;&#x1d461;表示价格&#xff0c;即在时间…

LIS检验信息软件源码,适合二级医院的应用

LIS系统主要面向医院检验科&#xff0c;包含检验医生日常处理、报告处理、质量控制、条码管理、仪器双工通讯、无人值守等诸多功能模块&#xff0c;能与HIS系统、体检系统和电子病历信息系统实现无缝连接&#xff0c;已成功应用于多家各种规模的医院&#xff0c;满足客户各方面…

Git之repo sync -c与repo sync -dc用法区别(四十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

InternLM学习笔记

入门岛 1. Linux基础知识 2. Python 基础知识 from collections import Countertext """ Got this panda plush toy for my daughters birthday, who loves it and takes it everywhere. Its soft and super cute, and its face has a friendly look. Its a …

论文阅读【检测】:Facebook ECCV2020 | DETR

文章目录 论文地址AbstractMotivation模型框架详细结构小结 论文地址 DETR Abstract 提出了一种将目标检测视为直接集预测问题的新方法。简化了检测pipeline&#xff0c;有效地消除了许多手工设计的组件的需求&#xff0c;例如非最大抑制过程或锚生成&#xff0c;这些组件明…

设计模式|观察者模式

观察者模式是一种行为设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时&#xff0c;它的所有观察者都会收到通知并更新。观察者模式常用于实现事件处理系统、发布-订阅模式等。在项目中&#xff0c…

GPU算力:驱动现代计算的引擎

在当今的计算密集型应用中&#xff0c;GPU&#xff08;图形处理单元&#xff09;算力已成为推动科学计算、人工智能、数据分析等领域发展的关键因素。GPU最初设计用于处理复杂的图形和图像任务&#xff0c;但随着技术的进步&#xff0c;它们已经演变为通用并行计算的强有力工具…

磁盘管理与磁盘卷--红帽Linux操作系统<>

分区的两种格式 1、MBR分区 MBR(Master Boot Record&#xff0c;主引导记录)是传统的分区机制&#xff0c;使用BI0S引导PC设备&#xff0c;寻址空间只有32bit长。 分区空间最大支持2.2TB 支持的分区数量:4个主分区或者3个主分区1个扩展分区 为什么MBR最多只能有4个主分区?…

云服务部署项目(Spring + Vue)

云计算&#xff1a;腾讯云 操作系统&#xff1a;Ubuntu 22.04.4 LTS 项目&#xff1a;若依前后端分离项目&#xff08;SpringBoot Vue&#xff09; 首先要安装基本的一些依赖环境&#xff0c;大家可以看一下我往期的文章&#xff1a; Ubuntu在线JDK Ubuntu在线安装Nginx Ubunt…

入门C语言Day19——猜随机数游戏

之前学了分支与循环的很多内容&#xff0c;所以今天可以试着来运用之前的知识来试着写一些有趣的程序——猜随机数游戏。&#xff08;当然&#xff0c;还有一些知识要补充。&#xff09; 这个多数人都应该有所耳闻&#xff0c;就是规定一个数字范围&#xff0c;然后去猜数字&a…

C#开机启动秘籍:唤醒沉睡的巨人

开机启动简介 在软件开发的世界里&#xff0c;有些程序需要在电脑启动时即刻唤醒&#xff0c;执行它们的关键任务。这就像是唤醒一位沉睡的巨人&#xff0c;确保它在第一时间内守护我们的数字世界。但是&#xff0c;如何使用C#实现这一功能呢&#xff1f;让我们一起探索这个技术…

文件解析的终极工具:Apache Tika

文件解析的终极工具&#xff1a;Apache Tika Apache Tika 简介 Apache Tika 是一个开源的、跨平台的库&#xff0c;用于检测、提取和解析各种类型文件的元数据。 它支持多种文件格式&#xff0c;包括文档、图片、音频和视频。 Tika是一个底层库&#xff0c;经常用于搜索引擎…

Android 列表或网格形式展示大量数据:RecyclerView

目录 RecyclerView是什么如何使用RecyclerView 涉及到的类LayoutManager为Item设置不同的布局样式制作拖动的RecyclerView 一、RecyclerView是什么 RecyclerView是Android支持库中的一个控件&#xff0c;用于在列表或网格形式展示大量数据。它是ListView的升级版&#xff0c…

《梦醒蝶飞:释放Excel函数与公式的力量》18.1 图表类型与设计

第18章&#xff1a;创建图表和数据可视化 18.1 图表类型与设计 Excel提供了多种图表类型&#xff0c;帮助用户以直观的方式展示数据。选择合适的图表类型和设计可以显著提高数据的可读性和理解度。以下将介绍常见的图表类型及其应用&#xff0c;并通过具体案例进行说明。 18.…

如何利用Jenkins自动化管理、部署数百个应用

目录 1. Jenkins 安装与部署步骤 1.1 系统要求 1.2 安装步骤 1.2.1 Windows 系统 1.2.2 CentOS 系统 1.3 初次配置 2. Gradle 详细配置方式 2.1 安装 Gradle 2.1.1 Windows 系统 2.1.2 CentOS 系统 2.2 配置 Jenkins 中的 Gradle 3. JDK 详细配置方式 3.1 安装 JD…