【C++系列P5】‘类与对象‘-三部曲——[对象特殊成员](3/3)

news2024/11/28 18:01:21

93e00c515c4641d992ec2719752edc1e.png

 前言

  • 大家好吖,欢迎来到 YY 滴 C++系列 ,热烈欢迎!
  • 【 '类与对象'-三部曲】的大纲主要内容如下

b1473e15ff2f49cdbffe139579c19944.png

  • 如标题所示,本章是【 '类与对象'-三部曲】三章中的第三章节——对象&成员章节,主要内容如下:

0a3b83580a7b4e68838c7a0f73eb5554.png

目录

一.const成员/成员函数

一.用const修饰this指针的好处——含权限知识点

二.能否所有的成员函数都加上const? 

三.几个的使用场景

二.匿名对象(即临时对象)

三.static静态成员 

一.静态成员基本知识

二.静态成员特性

三.静态成员函数和非静态成员函数的调用关系

四.static的应用:“求1+2+3+...n的和"

五.static应用:"实现一个类,计算程序中创建出了多少个类对象"


 

一.const成员/成员函数

将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this 指针表明在该成员函数中不能对类的任何成员进行修改

图示: 

6b9449e616914c81b34030559b6b1e43.png


一.用const修饰this指针的好处——含权限知识点

PS:权限知识点在下方

用const修饰this指针的好处:

  • 普通对象和const对象都能调用;

图示:

461589ef678641d49ab8b65e6e830936.png

 权限相关知识点:

       【权限等级较高的是const和具有常属性的量,权限较低的是普通数据】

  • 权限高的或平级的可以给另一量取别名/取地址(权限的缩小和平移)
  • 权限低的不能给另一量取别名/取地址(权限的放大)

图示:

23eb945ac1824c8cb9d54278587f41c8.png


二.能否所有的成员函数都加上const? 

答案:不是的,修改成员变量的函数不能加。


三.几个的使用场景

请思考下面的几个问题:

  • 1. const对象可以调用非const成员函数吗?no
  • 2. 非const对象可以调用const成员函数吗?yes
  • 3. const成员函数内可以调用其它的非const成员函数吗?no
  • 4. 非const成员函数内可以调用其它的const成员函数吗?yes

二.匿名对象(即临时对象)

特性:

  • 匿名对象的生命周期在当前行
  • 匿名对象具有常性
  • const+引用 :会延长匿名对象在当前函数局部域生命周期
int main()
{
    A aa(1);  // 有名对象 -- 生命周期在当前函数局部域
    A(2);     // 匿名对象 -- 生命周期在当前行

    Solution sl;
    sl.Sum_Solution(10);
    Solution().Sum_Solution(20);

    //A& ra = A(1);  // 匿名对象具有常性
    const A& ra = A(1); // const引用延长匿名对象的生命周期,生命周期在当前函数局部域
    A(10);

    Solution().Sum_Solution(20);

    string str("11111");
    push_back(str);

    push_back(string("222222"));

    push_back("222222");

    return 0;
}

三.static静态成员 


一.静态成员基本知识

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数

使用要点:静态成员变量一定要在类外进行初始化 


二.静态成员特性

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

三.静态成员函数和非静态成员函数的调用关系

请思考下面的几个问题:

  1. 静态成员函数可以调用非静态成员函数吗?no(无this指针)
  2. 非静态成员函数可以调用类的静态成员函数吗?  yes

四.static的应用:“求1+2+3+...n的和"

步骤:

  1. 成员变为静态成员变量
  2. 利用访问操作符与静态成员函数GetRet()得到_ret(和)

图示:

acb22e3aeb724383ba714494ba8f3fe5.png


五.static应用:"实现一个类,计算程序中创建出了多少个类对象" 

原理:

  • 定义一个静态成员变量_scount,再在类中声明一个访问静态成员变量的静态成员函数GetACount();
  • 构造++_scount,析构--_scount;

代码演示: 

class A
{
 public:
   A()                构造函数
  { ++_scount; }
   A(const A& t)      拷贝构造
  { ++_scount; }
   ~A()               析构函数
  { --_scount; }
   static int GetACount() 
  { return _scount; }
 private:
   static int _scount;
};

int A::_scount = 0;    静态成员变量类外定义

void TestA()
{
 cout << A::GetACount() << endl;       ::来访问静态成员变量
   A a1, a2;
   A a3(a1);
 cout << A::GetACount() << endl;
}

 

 

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

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

相关文章

1723_PolySpace Bug Finder命令行执行探索

全部学习汇总&#xff1a; GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes servral …

小兔鲜--项目总结3

目录 结算模块-地址切换交互实现 地址切换交互需求分析 打开弹框交互实现 地址激活交互实现 订单模块-生成订单功能实现 支付模块-实现支付功能 支付业务流程 支付模块-支付结果展示 支付模块-封装倒计时函数 理解需求 实现思路分析 会员中心-个人中心信息渲染 分页…

【JavaSE】Java基础语法(二十六):Collection集合

文章目录 1. 数组和集合的区别2. 集合类体系结构3. Collection 集合概述和使用【应用】4. Collection集合的遍历【应用】5. 增强for循环【应用】 1. 数组和集合的区别 相同点 都是容器,可以存储多个数据不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型…

【C++系列P4】‘类与对象‘-三部曲——[类](2/3)

前言 大家好吖&#xff0c;欢迎来到 YY 滴 C系列 &#xff0c;热烈欢迎&#xff01; 【 类与对象-三部曲】的大纲主要内容如下&#xff1a; 如标题所示&#xff0c;本章是【 类与对象-三部曲】三章中的第二章节——类章节&#xff0c;主要内容如下&#xff1a; 目录 一.类 1.…

CodeForces..学习读书吧.[简单].[条件判断].[找最小值]

题目描述&#xff1a; 题目解读&#xff1a; 给定一组数&#xff0c;分别是 “时间 内容”&#xff0c;内容分为00&#xff0c;01&#xff0c;10&#xff0c;11四种&#xff0c;求能够得到11的最小时间。 解题思路&#xff1a; 看似00&#xff0c;01&#xff0c;10&#xff0…

完整卸载office以及重装office 2021

完整卸载office以及重装 一.背景 之前很早安装的word最近发现打开&#xff0c;编辑等操作都很卡&#xff0c;而且占用的CPU很多&#xff0c;20%左右&#xff0c;而在网上搜索了一些结果无法解决问题后&#xff0c;决定卸载重装 二. 卸载的建议方法 直接参考官方链接从PC卸载…

华为OD机试之租车骑绿岛(Java源码)

租车骑绿岛 题目描述 部门组织绿岛骑行团建活动。租用公共双人自行车&#xff0c;每辆自行车最多坐两人&#xff0c;最大载重M。 给出部门每个人的体重&#xff0c;请问最多需要租用多少双人自行车。 输入描述 第一行两个数字m、n&#xff0c;分别代表自行车限重&#xff0c;部…

k8s 对外服务之 ingress|ingress的对外暴露方式|ingress http,https代理|ingress nginx的认证,nginx重写

k8s 对外服务之 ingress|ingress的对外暴露方式|ingress http&#xff0c;https代理|ingress nginx的认证&#xff0c;nginx重写 一 Ingress 简介二 Ingress 组成三 ingress 暴露服务的方式四 部署 nginx-ingress-controller4.1 修改 ClusterRole 资源配置4.2 DaemonSetHostNet…

STM32HAL库RS485-ModBus协议控制伺服电机

STM32HAL库RS485-ModBus协议控制伺服电机 一个月前&#xff0c;接手了一个学长的毕设小车&#xff0c;小车采用rs485通信的modbus协议驱动轮毂电机&#xff0c;与往常我学习的pwm控制电机方法大相径庭&#xff0c;在这里以这篇博客记录下该学习过程。 小车主要架构 电机型号 …

Python期末复习题库(上)——“Python”

小雅兰期末加油冲冲冲&#xff01;&#xff01;&#xff01; 1. (单选题) Python源程序的扩展名为&#xff08; A &#xff09; A. py B. c C. class D. ph 2. (单选题) 下列&#xff08; A &#xff09;符合可用于注释Python代码。 A. # B. */ C. // D. $ 3. (单选题)下列…

SMARTPHONE PLATFORM st解决方案

智能手机是最常用的计算设备。 它们展示了强大的硬件功能和复杂的操作系统&#xff0c;支持高级功能和人工智能应用、互联网和云访问、图像和视频采集、游戏以及语音通话和短信等核心电话功能。 要执行如此多样的应用&#xff0c;智能手机必须包含许多设备&#xff0c;包括大量…

一、电路分析的变量

点我回到主目录 ------------------------------------------------------------------------------------------------------------------------- 目录 1.电流 2.电压 3.功率 4.关联参考方向 5.电路吸收或发出功率的判断 1.电流 •电流 单位A&#xff08;安培…

vue基于Python的图书商城销售系统qo85w

系统以浏览器/服务器模式即B/S模板式为基础。本系统使用MySQL数据库,利用Python开发的操作系统&#xff1b;主要的功能有个人中心、用户管理、图书资讯管理、图书类型管理、图书信息管理、爬虫管理、留言板管理、系统管理、订单管理等组成。 本文首先介绍了现代化图书销售系统管…

2023电工杯B题全保姆论文讲解手把手教程 人工智能影响评价

更新&#xff1a;电工杯B题全保姆论文成品教程&#xff0c;手把手教你完成高质量成品 这次b题是这一道问卷分析题目&#xff0c;是我最擅长的题目之一了&#xff0c;问卷分析看起来简单&#xff0c;实际上没那么那简单&#xff0c;考验的是我们能不能把数据描述清楚&#xff0…

2023哈佛大学博士后/访问学者研究班一览

哈佛大学是全球顶尖的高等教育机构之一&#xff0c;其所拥有的丰富资源和卓越师资吸引了来自全球各地的优秀学者前来攻读博士学位或作为访问学者进行研究。而博士后访问学者研究班则是哈佛大学提供给这些博士后访问学者的一个重要平台。博士后访问学者研究班是一个跨学科的研究…

echarts 被封装后多次复用,图表被覆盖,解决方法

场景&#xff1a;为了方便样式统一&#xff0c;封装了一个盒子&#xff0c;其中包含echarts&#xff0c;option是从父组件传来的 问题&#xff1a; 多个父级页面使用这个盒子后&#xff0c;发现只有第一个盒子展示图表&#xff0c;但展示的是最后一个图片的样式&#xff0c;其他…

【数据结构】如何应用堆解决海量数据的问题

堆(Heap数据结构堆在计算机科学中有着广泛的应用&#xff0c;今天来介绍两种堆的应用&#xff1a;堆排序、Top-k问题&#x1f349; 堆排序 ​ 堆排序是一种基于堆数据结构的排序算法。它的基本思想是&#xff0c;将待排序的序列构建成一个大根堆&#xff08;或小根堆&#xff…

三展齐发,DBF户外展、高博会、健身展隆重开幕,火爆现场燃炸鹏城!

5月25日&#xff0c;深圳建设国家体育消费试点城市系列活动&#xff0c;第四届DBF深圳国际户外运动博览会&#xff0c;DBF深圳国际高尔夫运动博览会暨深圳国际健身运动博览会&#xff08;以下简称DBF运动户外生活展&#xff09;在深圳国际会展中心5.7号馆盛大举办&#xff01;开…

recurdyn接触特征参数含义

一般接触特征设置 Static Threshold Velocity静态门槛速度&#xff1a;判断静态摩擦和动态摩擦的标准&#xff0c;若相对速度小于此值&#xff0c;摩擦为静摩擦&#xff1b;若相对速度大于此值&#xff0c;摩擦为动摩擦。静态摩擦区域内摩擦系数计算函数为 Dynamic Threshold V…

【网络编程】详解UDP/TCP套接字的创建流程+守护进程

目录 一、网络编程套接字 1、一些概念 1.1源IP地址和目的IP地址 1.2端口号port 1.3TCP和UDP的性质 1.4网络字节序、IP地址类型转换、数据接收与发送函数、popen函数 2、UDP套接字 2.1UDP服务器创建流程 2.2UDP客户端创建流程 2.3创建socket套接字 2.4绑定套接字对应…