c++类与对象下速成

本篇文章继续讲解类与对象

再次探索初始化列表

特点:

1.每个成员变量在初始化列表中只能出现⼀次

2.引⽤成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进⾏初始化

3.C++11⽀持在成员变量声明的位置给缺省值,这个缺省值主要是给没有显⽰在初始化列表初始化的 成员使⽤的。

4.初始化列表中按照成员变量在类中声明顺序进⾏初始化

static成员

特点:

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

2.静态成员变量为所有类对象所共享,不属于某个具体的对象,不存在对象中,存放在静态区

3.⽤static修饰的成员函数,称之为静态成员函数,静态成员函数没有this指针

4.静态成员函数只能访问其他的静态成员

5.⾮静态的成员函数,可以访问任意的静态成员变量和静态成员函数

6.访问静态成员:通过类名::静态成员或者对象.静态成员来访问静态成员变量 和静态成员函数

7.静态成员也是类的成员,也受public、protected、private访问限定符的限制

8.静态成员变量不能在声明位置给缺省值初始化,因为缺省值是个构造函数初始化列表的,静态成员变量不走初始化列表

拓展提升

构造和析构的顺序

构造顺序的规则:

1.全局对象先于局部对象进行构造

2.局部对象按照出现的顺序进行构造,无论是否为static

析构顺序的规则:

1.先析构后定义的对象(被static修饰的除外)

2.析构完局部内所有的没有被static修饰的对象后,开始析构static

3.最后析构全局对象

总结:

构造顺序:全局先于局部,局部顺序构造(后半句的意思是局部的对象是按照出现的顺序构造,包括static)

析构顺序:后定义的先析构,无s饰的优先先析构析完再析s饰(始终遵循后定义的先析构的原则),全局对象排最后

友元

概念:⼀种突破类访问限定符封装的⽅式

种类:友元类、友元函数

定义:在类或函数前面加上关键字friend即可

特点:

1.外部友元函数可访问类的私有和保护成员   注意:友元函数只是一种声明,不是类的成员函数

2.友元函数可以在类定义的任何地⽅声明

3.⼀个函数可以是多个类的友元函数。

4.有元类的关系是单向的,不具有交换性,比如A类是B类的友元,但是B类不是A类的友元

5.友元类关系不能传递,如果A是B的友元,比如B是C的友元,但是A不是B的友元。

内部类

概念:如果⼀个类定义在另⼀个类的内部     即一个类里面还有一个类

特点:

内部类默认是外部类的友元类。  举例:A类中有B类,那么B类就是A类的友元类

来看道例题

例题

求1+2+3+...+n_牛客题霸_牛客网 (nowcoder.com)

题目要求:在不使用循环以及分支语句的情况下从1到n的数字相加

 拓展小知识

在用类 类型实例化对象时,有一种对象比较特别,在实例化这个对象时往往与它的长度有关,这个对象就是实例化数组,实例化几次是与数组的长度有关

解题思路

先写两个类,一个用于计算最后结果,一个用于定义数组和返回最后结果,在该类的私有域中声明两个静态的成员变量,一个用于自增,一个用于记录最后结果,需要注意的是这两个静态成员变量需要放到类外去定义,最后在Sum类中编写一个静态的函数用于对外输出结果变量

代码编写

class Sum

{

public:

      Sum()    

    {

       ret += i;

       i++;

    }

    static int GetRet()

    {

        return ret;

    }

private:

static int i;

static int ret;

};

int Sum::i = 1;

int Sum::ret = 0;

class Solution {

public:

    int Sum_Solution(int n) {

        Sum sum[n];

        return Sum::GetRet();

    }

};

总结:通过这道题我们需要记住的是用类类型实例化数组时,会"调用"多少次与数组的长度有关

匿名对象

概念:⽤类型(实参)定义出来的对象叫做匿名对象  即类型(实参)

拓展小知识

类型 对象名(实参)这个是有名对象

特点

匿名对象⽣命周期只在当前⼀⾏

定义

类型 (实参)

本篇文章就先到这里,我们下期文章见!

都看到这里了,给个三连呗,谢谢啦!

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

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

相关文章

人工智能从业人员“计算机视觉设计开发工程师专项培训(第七期)通知!

关于开展人工智能从业人员“计算机视觉设计开发工程师专项培训 (第七期)的通知! 为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求,深入实施人才强国战略和创新…

【vue】监听table水平滚动条切换tab后还原位置

有个需求就是切换tab后,原先的table水平滚动条要还原位置(如下图),先说下思路,大致就是 切出页面时 把滚动距离保存到Storage 中,切回来时在恢复 直接上代码 首先table ref指定一下ref"jtable" …

如何从回收站恢复永久删除的文件

我们每个人都有一些重要的数据,这些数据对我们的专业和个人工作都很有用。最糟糕的噩梦就是不小心从电脑中删除了重要文件。当你清空回收站时,情况就变得无法控制了。如果你遇到这种情况,别担心;我们今天在这里帮助你 在清空回收站…

ArgoCD如何使用ArgoCD CLI

1.下载CLI工具 2.添加到环境变量,或者创建/usr/bin的快捷方式 3. 获取API Server 地址 首先,你需要获取Argo CD API server的访问地址。如果你使用的是端口转发来访问Argo CD的控制台,API server的地址通常是 localhost 和与端口转发命令中…

LabVIEW开关磁阻电机特性测量系统

基于LabVIEW软件和特定硬件组件的开关磁阻电机(SRM)特性测量系统,结合多功能数据采集卡,统能够准确地测量并分析SRM的电磁特性,从而支持电机模型的精确建立和性能优化。 项目背景 在工业生产和家用电器领域&#xff0…

建站:腾讯云+宝塔linux+xftp

1.首先,控制台,服务器 2.服务器-网络与域名-ip地址,能看到公网地址 3.宝塔Linux面板-网站-添加站点 4.填写域名会自动生成 ftp 帐号密码 域名可以加上端口,端口号可以写大点 5.xftp新建会话 主机地址:腾讯云拿到的公…

免费又好用的保护网站WAF,基于语义引擎的waf雷池社区版推荐

为什么传统规则防护失效了?🤔 目前,大多数 Web 应用防火墙(WAF)依赖规则匹配来识别和阻断攻击流量。然而,随着 Web 攻击的低成本、复杂多样的手段和频繁爆发的高危漏洞,管理人员不得不频繁调整防…

网络参考模型

OSI七层网络参考模型 OSI模型仅作为参考,现实中并不用,OSI模型的目的是为了解决主机之间的网络通讯。 1. 物理层: 物理层将由比特(0和1)组成的数据用不同的媒介(电、光或其他形式的电磁波)传输…

解决Microsoft store下载/更新时出现错误代码: 0x80070422的方法

首先winr,输入services.msc打开服务面板 找到Microsoft store安装服务这一项,双击打开 启动类型设为自动或手动,然后启动,点击确定即可

Vatee万腾平台:开启企业数字化新纪元的钥匙

在当今瞬息万变的商业环境中,企业数字化转型已成为不可逆转的趋势。这一转型不仅关乎企业的生存与发展,更是企业在激烈的市场竞争中保持领先地位的关键。Vatee万腾平台,作为数字化领域的佼佼者,正以其卓越的性能和广泛的应用场景&…

薪资与职级全景:一览互联网巨头的晋升之路

薪资与职级全景:一览互联网巨头的晋升之路 帮大家整理了包含阿里巴巴、腾讯、百度、字节跳动、华为、京东、美团、滴滴、小米 9*多家 家互联网大厂的薪资、职级、考核、晋升**等内容。 (超多内容,建议收藏起来慢慢看) 字节跳动 全…

什么是虚拟DOM?如何实现一个虚拟DOM?说说你的思路

一、什么是虚拟DOM 虚拟 DOM (Virtual DOM )这个概念相信大家都不陌生,从 React 到 Vue ,虚拟 DOM 为这两个框架都带来了跨平台的能力(React-Native 和 Weex) 实际上它只是一层对真实DOM的抽象,以JavaScript 对象 (VNode 节点) 作为基础的树,用对象的属性来描述节点,…

开放式耳机哪个品牌好?2024开放式蓝牙耳机排行榜推荐

​在当今的耳机界,开放式耳机凭借其舒适的佩戴感和新颖的非入耳构造,赢得了众多用户的青睐。这种耳机设计让你在享受音乐的同时,还能清楚地听到周围的声音,方便交流,对耳朵健康也更友好。对于喜欢运动和追求音质的朋友…

【Golang】Go多线程中数据不一致问题解决方案--sync锁机制

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

怎样批量删除大量的QQ邮件?

当你的QQ邮箱中存在大量的邮件,手动删除的话,只能批量删除一页数据,显得很费力!我教大家一个快速删除邮件的方法: 第一步:设置收信规则 第二步:利用收信规则,可将将收件箱中的文件…

C++:vector(题目篇)

文章目录 前言一、只出现一次的数字二、只出现一次的数字 II三、只出现一次的数字 III四、杨辉三角五、删除有序数组中的重复项六、数组中出现次数超过一半的数字七、电话号码的字母组合总结 前言 今天我们一起来看vector相关的题目~ 一、只出现一次的数字 只出现一次的数字…

echarts 中添加图片/图标

let myChart echarts.init(this.$refs.chartOne); // 注意这里的 ref 引用 myChart.setOption({ tooltip: {trigger: item,formatter: {b} : {c}},series: [{type: pie,radius: 50%,data: this.swjList,label: {formatter: (params) > {if (params.name ! ) {let percent…

程序设计基础I-实验7 函数(编程题)

7-1 sdut- C语言实验—计算表达式 计算下列表达式值: 输入格式: 输入x和n的值,其中x为非负实数,n为正整数。 输出格式: 输出f(x,n),保留2位小数。 输入样例: 3 2输出样例: 在这里给出相应的输出。例如: 2.00 …

JUC高并发编程11:Fork/Join分支合并框架

1 Fork/Join 框架简介 Fork/Join 框架是 Java 7 引入的一种并行编程框架,用于将一个大任务拆分成多个小任务进行并行处理,最后将子任务的结果合并成最终的计算结果。Fork/Join 框架的核心思想是将任务递归地分解为更小的子任务,直到子任务足…

Zilliz获Forrester报告全球第一;OB支持向量能力;Azure发布DiskANN;阿里云PG发布内置分析引擎

重要更新 1. Azure发布PostgreSQL向量索引扩展DiskANN,声称在构建HNSW/IVFFlat索引上,速度、精准度都超越pg_vector,并解决了pg_vector长期存在的偶发性返回错误结果的问题( [1] )。 2. 阿里云RDS PostgreSQL 发布AP加速引擎(rds…