C++类与对象的特性

1.类的静态成员

        静态成员包括静态成员变量和静态成员函数。使用静态成员变量可以实现类的数据成员的共享。
        静态成员变量的值可以修改,并且对类的每个对象都相同,它是所有类对象共有的数据,对对象而言节约了空间。其存储空间的分配不在构造函数内完成,空间回收也不在析构函数内完成。它的主要目的是定义类的各个对象所共用的数据。
        静态成员函数不属于类的特定对象,其可以在不生成类的对象的情况下,直接访问类的静态成员变量,而不能访问类的非静态成员变量。静态成员函数不含this指针,并且只能访问类的其他静态成员,而不能访问类的非静态成员。

2.友元

        友元机制允许在类外对类对象的所有成员(包括私有、保护和公有)进行访问。友元既可以是一般函数,也可以是另一个类的成员函数,还可以是另一个完整的类。
        当一个普通函数声明为一个类的友元函数后,它就可以访问该类的所有成员。
        当一个类的成员函数声明为另一个类的友元函数后,它不仅可以访问自己所在类的所有成员,而且还可以访问friend语句所在类中所有成员。
        当一个类声明为另一个类的友元时,这个类中的所有成员函数不仅可以访问自己所在类的所有成员,而且还可以访问friend语句所在类的所有成员。

3.常量类型

        常量的概念主要是为了保证数据的安全性。常量在程序运行过程中其值是不可改变的。
        如果将一个对象定义为常量对象,那么它的所有数据成员的值在对象的整个生存期内都不能被改,因此在定义时要对数据成员进行初始化。
        类的常量成员包括常量成员函数和常量数据成员。常量成员函数不能改变类的数据成员的值,也不能调用该类中非常量成员函数,只能调用该类的常量成员函数。常量数据成员不能通过任何函数对其赋值,构造函数对其进行初始化时,只能通过初始化列表进行。
        常量引用的对象不能被修改。若在函数调用中,不希望被调用函数改变参数的值,那么就应该用常量引用来作函数的形参。
        常量指针的特点是不能改变指针的值,即指针所保存的地址,但可以改变所指向变量的值。
        指向常量的指针的特点是可以改变指针的值,即指针所保存的地址,但不能改变所指向变量的值。

4.对象的生存期

        对象的生存期是指对象从创建到结束的时间。
        局部对象是定义在一个程序块或函数体内的对象,定义对象时,系统自动调用构造函数创建对象,对象的生存期开始;退出程序块或函数时,系统自动调用析构函数,释放该对象,对象的生存期结束。
        静态对象的生存期从第一次定义对象时开始,到程序运行结束时终止。
        全局对象的生存期从程序开始运行时开始,到程序运行结束时终止。
        动态对象的生存期从通过new创建时开始,到通过delete释放时终止。如果没有delete会出现内存泄漏。

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

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

相关文章

华为机考入门python3--(32)牛客32-密码截取

分类:最长对称子串、动态规划 知识点: 生成二维数组 dp [[0] * n for _ in range(n)] 求最大值 max(value1, value2) 动态规划的步骤 a. 定义问题 长度为n下最长的对称子串的长度 b. 确定状态 dp[i][j]表示字符串从索引i到j的子串是否为对称…

关于Vue本地图片转file传到后端服务器(不通过组件上传)

一、代码 // 核心代码 const getMyFileFromLocalPath (localPath, filename) > {return fetch(localPath).then((response) > response.blob()).then((blob) > new File([blob], filename, { type: "image/png" })); // 假设是PNG格式// 获取真正的流文件…

Hibernate最新6万字面试题及参考答案

目录 什么是Hibernate? Hibernate的主要组件有哪些? 解释ORM(对象关系映射)的概念。

Vue3的setup系列篇之defineEmits和defineProps使用方式

父组件参数 <template><div><h2>子组件联动的与使用</h2><!-- reactive这样 --><!-- <childCom v-model:user"data.user" v-model"money" /> --><!-- ref这样 --><childCom v-model:user"user&q…

封装,static,代码块,对象的打印

封装&#xff0c;static&#xff0c;代码块&#xff0c;对象的打印 1. 封装1.1 封装的概念1.2 包的概念1.3 访问修饰限定符1.4 被封装的属性如何set和get&#xff1f; 2. static2.1 再谈学生类2.2 static修饰成员变量2.3 static修饰成员方法2.4 static成员变量初始化 3. 代码块…

IGMP——组播成员端网络协议

目录 一.IGMP基本概念 &#xff08;1&#xff09;组播转发困境 &#xff08;2&#xff09;感知组播成员方式 &#xff08;3&#xff09;IGMP版本 二.IGMP各版本的区别与联系 &#xff08;1&#xff09;IGMPV1 1.普遍组查询报文 2.成员关系报告报文 3.IGMPV1报文格式 4…

JavaScript日期与时间处理的艺术

JavaScript日期与时间处理的艺术 基础概念&#xff1a;JavaScript中的日期对象诞生时刻时间戳&#xff1a;纪元的秘密 案例一&#xff1a;格式化日期的艺术美化你的日期自定义格式化 案例二&#xff1a;跨时区的舞蹈时区转换 案例三&#xff1a;时间旅行的挑战闰年与月份天数避…

Go 项目如何打包在各个平台运行?

1 Windwos开发环境打包可执行文件 在Windows环境&#xff0c;我们可以将Golang的项目打包成不同平台的可执行文件。 1.1 打包Windows可执行文件 set GOOSwindows set GOARCHamd64 go build -o bin/app_win.exe1.2 打包Linux可执行文件 set GOOSlinux set GOARCHamd64 go …

java第十七课 —— 递归

方法递归调用 递归就是方法自己调用自己&#xff0c;每次调用时传入不同的变量&#xff0c;递归有助于编程者解决复杂问题&#xff0c;同时可以让代码变得简洁。 递归重要规则 执行一个方法时&#xff0c;就创建一个新的受保护的独立空间&#xff08;栈空间&#xff09;。方…

922. 按奇偶排序数组 II - 力扣

1. 题目 给定一个非负整数数组 nums&#xff0c; nums 中一半整数是 奇数 &#xff0c;一半整数是 偶数 。 对数组进行排序&#xff0c;以便当 nums[i] 为奇数时&#xff0c;i 也是 奇数 &#xff1b;当 nums[i] 为偶数时&#xff0c; i 也是 偶数 。 你可以返回 任何满足上述…

阮一峰的ES6文档(第一天)

目录 ECMAScript 6简介 let和const命名 let基本用法-块级作用域 不存在变量提升 不允许重复声明 暂时性死区 为什么需要块级作用域&#xff1f; 原因一&#xff1a;内层变量可能会覆盖外层变量 原因二&#xff1a;用来计数的循环遍历泄露为全局变量 const基本用法-声明…

微服务架构-异步消息传递设计模式

微服务架构-异步消息传递设计模式 异步消息允许服务发送消息后立即返回&#xff0c;而不需要等待消息被处理完毕&#xff0c;这种异步方式可以大大提高系统的处理速度、和吞吐量。 微服务架构&#xff0c;通常涉及多个服务之间的相互调用&#xff0c;如果通信只是在少数几个微…

lama-cleaner中的Paint-by-Example使用

Lama Cleaner是一个免费的、开源的、完全自托管的修复工具&#xff0c;里面提供了很多最前沿的AIGC模型。可以使用它从图片中删除任何不需要的物体、缺陷、人物&#xff0c;或删除和替换图片上的任何内容。本文章详细介绍了该工具的所有功能&#xff0c;并体验了下每个功能的实…

Shell编程之正则表达式与文本处理器

一、正则表达式 之前学习了 Shell 脚本的基础用法&#xff0c;已经可以利用条件判断、循环等语句编辑 Shell 脚本。接下来我们将开始介绍一个很重要的概念——正则表达式&#xff08;RegularExpression&#xff0c;RE&#xff09;。 1.1正则表达式概述 下面先来了解一下正则表…

力扣爆刷第141天之二叉树十连刷(层序遍历)

力扣爆刷第141天之二叉树十连刷&#xff08;层序遍历&#xff09; 文章目录 力扣爆刷第141天之二叉树十连刷&#xff08;层序遍历&#xff09;一、102. 二叉树的层序遍历二、107. 二叉树的层序遍历 II三、199. 二叉树的右视图四、637. 二叉树的层平均值五、429. N 叉树的层序遍…

BUUCTF---web---[BJDCTF2020]ZJCTF,不过如此

1、点开连接&#xff0c;页面出现了提示 传入一个参数text&#xff0c;里面的内容要包括I have a dream。 构造&#xff1a;?/textI have a dream。发现页面没有显示。这里推测可能得使用伪协议 在文件包含那一行&#xff0c;我们看到了next.php的提示&#xff0c;我们尝试读取…

accelerate训练SD-LoRA,解决ValueError: Attempting to unscale FP16 gradients.问题

训练指令需从原来的&#xff1a; accelerate launch –mixed_precision“fp16” train_text_to_image_lora.py –pretrained_model_name_or_path“F:/XYX/Documents/AITools/ControlNetImplement/ControlNetTest/models–runwayml–stable-diffusion-v1-5” –dataset_name“d…

卢文岩博士受邀参与中国科学院大学校友论坛 解码DPU核心价值

近日&#xff0c;第五届中国科学院大学校友创新论坛正式举行&#xff0c;本次论坛聚焦科技前沿领域&#xff0c;旨在搭建高端对话平台&#xff0c;促进产学研深度融合。在大算力时代——AI技术前沿沙龙上&#xff0c;中科驭数高级副总裁、CTO卢文岩博士受邀分享《DPU——连接算…

Mac | Mac 移动硬盘无法分区问题

现象问题 电脑配置&#xff1a;MacBook Pro M1&#xff0c;系统 Sonoma Mac 系统新升级了 Sonoma&#xff0c;结果出现各种问题。外接屏幕居然不能旋转 90 &#xff0c;查了一下是Sonoma系统导致的&#xff0c;以及莫名发热的问题。想着要么回退一下系统算了&#xff0c;于是网…

unity3D获取某天的0点和23点59分59秒

系列文章目录 unity工具 文章目录 系列文章目录unity工具 &#x1f449;一、前言&#x1f449;二、获取某一天的0点和23点59分59秒1-1.代码如下1-2.调用方法如下1-2-1.获取当天的时间1-2-2.获取某一天的时间 &#x1f449;三、当月第一天0时0分0秒&#x1f449;四、当月最后一…