【C++】4.类和对象(下)

一、再谈构造函数

        1.1、初始化列表

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

class Date
{
public:
     Date(int year, int month, int day)
         : _year(year)
         , _month(month)
         , _day(day)
     {}
 
private:
     int _year;
     int _month;
     int _day;
};

特点:

        1)每个成员变量在初始化列表只能出现一次

        2)引用成员变量,const成员变量,自定义类型成员(且该类没有默认构造函数时)必须使用初始化列表

        3) 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量, 一定会先使用初始化列表初始化。初始化列表相当于在定义数据时给数据初始化。

        4)成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关

        1.2、explicit关键字

        构造函数不仅可以构造与初始化对象,还具有类型转换的作用,而explicit关键字就是禁止隐式类型转化的。

二、static数据成员

        static修饰的变量称为静态成员变量,static修饰的函数称为静态成员函数。他们都是类的成员,也受public、protect、private的限制

        静态成员变量必须在类外定义,因为它处于静态区,属于全部类对象成员,初始化列表不会初始化它。

        静态成员函数,它没有this指针,不能访问类中的成员。

三、友元

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

        3.1、友元函数

        在上一篇中的流插入,流提取中用到了友元函数,那么它究竟有什么性质呢?

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

        2)友元函数不能用const修饰

        3)友元函数不受访问限定符的限制

        4)一个函数可以是多个类的友元函数

        3.2、友元类

        1)友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。

        2)友元关系是单向的,不具有交互性。 

        3)友元关系不能传递 如果C是B的友元, B是A的友元,则不能说明C时A的友元。

        4)友元关系不能继承。

四、内部类

        如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类就是外部类的友元类

        性质:

        1. 内部类可以定义在外部类的public、protected、private都是可以的。

        2. 注意内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名。

        3. sizeof(外部类)=外部类,和内部类没有任何关系。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动态IP与静态IP的区别,你选对了吗?

在互联网世界中,IP地址是每台设备在网络上的唯一标识。这些地址可以是动态的,也可以是静态的。对于非专业人士来说,理解这两者之间的区别可能会有些困难。本文旨在深入探讨动态IP和静态IP的主要差异,帮助读者根据自己的需求做出明…

华为sr-mpls policy配置案例

SR-MPLS POLICY在ensp上面做不了,这是官方上的配置

CSS基础之伪元素选择器(如果想知道CSS的伪元素选择器知识点,那么只看这一篇就足够了!)

前言:我们已经知道了在CSS中,选择器有基本选择器、复合选择器、伪类选择器、那么选择器学习完了吗?显然是没有的,这篇文章讲解最后一种选择器——伪元素选择器。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我…

爱上JDK源码阅读-Integer

知识点 自动装箱和拆箱IntegerCache机制toString()实现算法优化 从一道面试题开始 Integer a 100; int b 100; if (a b) {System.out.println("a b"); } else {System.out.println("a ! b"); }聪明的你应该马上可以知道答案了,输出就是 …

【SQL】DISTINCT GROUP BY

找到所有办公室里的所有角色(包含没有雇员的),并做唯一输出(DISTINCT) 用DISTINCT : SELECT DISTINCT B.Building_name,E.Role FROM Buildings B LEFT JOIN Employees EON B.Building_name E.Building需要找到的结果:所有办公室名字&#…

C# 图像旋转一定角度后,对应坐标怎么计算?

原理分析 要计算图像内坐标在旋转一定角度后的新坐标,可以使用二维空间中的点旋转公式。假设图像的中心点(即旋转中心)为 (Cx, Cy),通常对于正方形图像而言,中心点坐标为 (Width / 2, Height / 2)。给定原坐标点 (X, …

10:HAL---高级定时器

前言: 高级定时器具有通用定时器的所有功能,我们在这里面只说它不一样的地方。(通用定时器不具备的功能) 一:高级定时器 1:介绍 2:重复计数器 在我们普通的定时器中当CNTCCR时直接发生溢出。然…

阿里二面凉了,难蹦。。。

分享一位同学阿里巴巴的后端面经,共有 2 面,第一面很顺利过了,可惜挂在第二面。 这两面的知识点范围,我帮大家罗列一下: 网络:TCP、HTTP mysql:索引应用、索引结构、隔离级别、最左匹配 redis…

图小灵的多线程

进程 简而言之,一个运行的程序就叫作进程 管理进程,要先将进程使用类/结构体,表示各个属性 为了后续增删改查,需要将进程通过数据结构串联起来 系统中有一个结构体专门用来表示进程的属性,叫作PCB(进程控制块) 一个进程使用一个或者多个PCB来表示 系统会使用类似于双向链…

pycharm-git 配置(1)

1.安装git2.pycharm 中配置git 插件 弹出Git版本号,即配置成功。3.创建本地仓库 VCS->VCS operations->create repository->设置本地目录 左下角可以看到git本地仓库git可以看到push,commit。 4.配置远方仓库,此时确保git上是有这个项目…

在开发板上运行spidev_test报错:“./spidev_test: line 2: h: not found”

问题 今天交叉编译spidev_test后,放到开发板上运行报错:“./spidev_test: line 2: h: not found” 原因 编译方式不同,生成的是64为程序,应该生成32位的程序。 解决办法: 修改为直接用命令编译,生成…

酷开科技抓住“客厅经济”发展的机遇,不断对酷开系统升级赋能

酷开科技抓住“客厅经济”发展的机遇,不断对酷开系统升级赋能,打造新的生活场景,满足消费者的不同生活需求,酷开科技的产品和服务让消费者能够在家庭空间中享受到更加智能、便捷和温馨的时光。同样凭借更加包容、开放的生态体验&a…

贪吃蛇项目实战——学习详解

前言:贪吃蛇是一个经典的游戏, 本节将使用c语言实现一个简易的的贪吃蛇小游戏。 本节内容适合已经学完c语言还有数据结构链表的友友们。 我们要实现的贪吃蛇是在控制台进行游戏的。 它运行起来是这样的: 贪吃蛇 那么, 为了实现这个小游戏。 我…

添加Redis缓存

1.缓存查询 在service层Impl文件中,进行查询时优先向Redis中查数据,查到就查到了,没有查到向mysql数据库中查,查到之后不先返回,而是先将数据存到数据库(缓存),在再返回数据。 1.1 代码实现(缓…

鸿蒙端云一体化开发--调用云函数--适合小白体制

如何实现在端侧调用云函数? 观看前,友情提示: 不知道《如何一键创建端云一体化模板》的小白同学,请看: 鸿蒙端云一体化开发--开发云函数--适合小白体制-CSDN博客 实现方法: 第一步:添加依赖 …

98%的企业与被入侵的第三方有关联,如何有效的防止入侵

技术供应链漏洞使威胁参与者能够以最小的努力扩展其运营,在导致第三方入侵的外部B2B关系中,75%涉及软件或其他技术产品和服务,其余25%的第三方违规涉及非技术产品或服务。 入侵通常需要几个月或更长的时间才能公之于众,受害者可能…

【Leetcode】string类刷题

🔥个人主页:Quitecoder 🔥专栏:Leetcode刷题 目录 1.仅反转字母2.字符串中第一个唯一字符3.验证回文串4.字符串相加5.反转字符串I I6.反转字符串中的单词III7.字符串相乘8.把字符串转换为整数 1.仅反转字母 题目链接:…

C++:模板详解

模板详解 1.函数模板1.概念2.语法3.原理4.实例化1.隐式实例化2.显示实例化 5.匹配原则 2.类模板1.格式2.实例化 3.非类型模板参数注意点 4.特化1.概念2.函数模板特化1.前提2.语法说明3.示例 3.类模板特化1.全特化2.偏特化/半特化3.选择顺序 4.按需实例化 5.模板的分离编译1.分离…

开发一个农场小游戏需要多少钱

开发一个农场小游戏的费用因多个因素而异,包括但不限于游戏的规模、复杂性、功能需求、设计复杂度、开发团队的规模和经验,以及项目的时间周期等。因此,无法给出确切的费用数字。 具体来说,游戏的复杂程度和包含的功能特性数量会直…

巧用断点设置查找bug【debug】

默认设置的断点,当代码运行到断点处MCU就会被挂起,从而停在断点处。 但在某些情况下,如调试FCCU时,如果设置断点,MCU停下后将会导致 FCCU 配置WDG超时。或在调试类似电机控制类的应用时,不适当的断点会导 致…
最新文章