当前位置: 首页 > news >正文

析构函数 对象数组 对象指针

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 

 

目录

🐰析构函数

🌸析构函数的定义

🌸析构函数的应用:

🐰对象数组

🐰指向对象的指针

🌸对象指针的概念:

🌸定义对象指针:

🌸指向对象的数据成员的指针

🌸指向对象的成员函数的指针


🐰析构函数

🌸析构函数的定义

析构函数的函数名是固定的,由波浪线~后跟类名构成。析构函数没有返回值,也不接受参数。由于析构函数不接受参数,因此析构函数无法重载。一个类可以有多个构造函数,有且仅有一个析构函数。当一个类未定义自己的析构函数时,编译器会为他自动生成一个合成的析构函数。合成的析构函数函数体为空。
在一个析构函数中,首先执行函数体,然后析构成员,成员被初始化顺序的逆序析构(先构造后析构,后构造线析构)。 析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前,完成一些清理工作。使这部分内存可以被程序分配给新对象使用。程序设计者要设计好析构函数,以完成所需的功能,只要对象的生命周期结束,程序就会自动执行析构函数来完成这些工作。

🌸析构函数的应用

无论何时一个对象被销毁,都会自动调用其析构函数
(1)对象再离开其作用域时被销毁
(2)当一个对象被销毁时,其成员函数被销毁。
(3)对于动态分配的对象,当对指向它的指针应用delete运算符时被销毁
(4)对于临时对象,当创建它的完整表达式结束时被销毁
注意:当指向对象的引用或指针离开作用域时,析构函数不会执行
class student
{
public:student(){sno=200;sname="zhagsan";}student(int a,string b){sno=a;sname=b;};~student();//析构函数的声明(记住析构函数没有返回类型,参数列表为空)void setStudent();void showStudent();int Add();private:int sno;string sname;};
void student::setStudent()
{cout<<"请输入学号和姓名"<<endl;cin>>sno>>sname;
}
void student::showStudent()
{cout<<sno<<' '<<sname<<' '<<endl;
}
int student::Add()
{return sno;
}
student::~student()//析构函数的定义(类外定义函数一定加类名)
{cout<<"很好"<<"\n";
}

🐰对象数组

所谓对象数组,指每一个数组元素都是对象的数组,即若一个类有若干个对象,我们把这一系列的对象用一个数组来存放。对象数组的元素是对象,不仅具有数据成员,而且还有函数成员。
声明一个一维数组的格式如下:
       类名 数组名[常量表达式]
与基本数据类型的数组一样,在使用对象数组时也只能访问单个数组元素,其一般形式为:
        数组名[下标表达式].成员名
在建立数组时,需要对数组进行初始化。对象数组的初始化过程实际上就是调用构造函数对每一个元素对象进行初始化的过程。
注:当一个数组中的元素被删除时,系统也会调用析构函数,创建多少个对象,就会调用多少次构造函数
#include<iostream>
using namespace std;
class student
{
public:void setstudent();void showstudent();
private:char id;string name;
};
void student::setstudent()
{cout<<"请输入学号和姓名"<<endl;cin>>id>>name;
}
void student::showstudent()
{cout<<"学号和姓名分别为"<<endl;cout<<id<<name<<endl;
}
int main()
{student s[3];//创建有三个对象的对象数组for(int i=0;i<3;i++){s[i].setstudent();}for(int i=0;i<3;i++){s[i].showstudent();}
}

🐰指向对象的指针

🌸对象指针的概念:

指针指向的是内存中对象所占用空间,对象在内存中的首地址称为对象的指针,用来保存对象的地址的指针变量称为指向对象的指针变量,简称指向对象的指针

🌸定义对象指针:

类名* 指针名
注意:对象指针访问其公共成员是使用"->",对象名访问公共成员时是使用"."
 
student s1;
student* p=&s1
p1->Add;

🌸指向对象的数据成员的指针

数据类型名* 指针名;
指针=&对象名.数据成员名
注意:这里的数据成员一定要是公共的
student s2;
int* p2;
p2=&s2.flag;

🌸指向对象的成员函数的指针

指向对象的普通函数的指针:
返回类型 (*指针名)(参数列表)
指针名=&函数名或者指针名=函数名;
(*指针名)(参数列表);
void Add()
{cout<<a+b<<endl;
}void (*p3)();
p3=Add;//(1)
P3=&Add;//(2)
(1)(2)都是一样的,因为函数名就是函数的首地址,函数名前加&不影响

指向对象的成员函数的指针:
返回类型 (类名::*指针名)(参数列表)
指针名=&对象名.成员函数名;
指向对象成员函数的指针调用对象的成员函数:
(对象名.指针名)(参数列表)
student s4;
void (student::*p4)();
p4=&student::Add;
(s4.*p4)();

创建一个两数之和的类

#include<iostream>
using namespace std;
class student
{
public:student(){a=1;b=1;}student(int x,int y){a=x;b=y;};void Add();int flag=1;
private:int a;int b;};
void student::Add()
{cout<<a+b<<endl;
}
//普通函数
void Add(int x,int y)
{cout<<x+y<<endl;
}
int main()
{//对象指针student s1(1,6);student* p1=&s1;p1->Add();//对象数据成员指针student s2(1,6);int *p2;p2=&s2.flag;//普通函数指指针void (*p3)(int,int);p3=Add;//普通函数指针调用函数(*p3)(3,5);//成员函数指针student s4={1,3};void (student::*p4)();p4=&student::Add;//成员函数指针调用函数(s4.*p4)();
}

  🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸   

相关文章:

析构函数 对象数组 对象指针

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章 &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下定决心去做” &#x1…...

Vue对Axios网络请求进行封装

一、为什么要对网络请求进行封装&#xff1f; 因为网络请求的使用率实在是太高了&#xff0c;我们有的时候为了程序的一个可维护性&#xff0c;会把同样的东西放在一起&#xff0c;后期找起来会很方便&#xff0c;这就是封装的主要意义。 二、如何进行封装&#xff1f; 1、将…...

Android framework HAL(HIDL)

简述 当你在Android系统中使用不同的硬件设备&#xff08;例如摄像头、传感器、音频设备等&#xff09;时&#xff0c;你需要与硬件抽象层&#xff08;HAL&#xff09;进行通信。 HAL是一个中间层&#xff0c;它充当了硬件和应用程序之间的桥梁。但是&#xff0c;由于硬件设备…...

QML 模型(ListModel)

LIstModel&#xff08;列表模型&#xff09; ListModel 是ListElement定义的简单容器&#xff0c;每个定义都包含数据角色。内容可以在 QML 中动态定义或显式定义。 属性&#xff1a; count模型中数据条目的数量dynamic动态角色&#xff0c;默认情况下&#xff0c;角色的类型…...

你还在调戏AI,有的公司已经用ChatGPT开展业务了

近日&#xff0c;OpenAI 正式宣布开放 ChatGPT 和 Whisper 两个模型的 API&#xff0c;API 版本的ChatGPT 不仅功能更多、性能更强&#xff0c;而且还更便宜一一相当于目前 GPT-3 模型价格打一折!划重点OpenAl正式开放 ChatGPT 和 Whisper 模型的 API&#xff0c;目前 SnapChat…...

DatenLord前沿技术分享 No.20

达坦科技专注于打造新一代开源跨云存储平台DatenLord&#xff0c;致力于解决多云架构、多数据中心场景下异构存储、数据统一管理需求等问题&#xff0c;以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。喷泉码具有极高的纠错能力&#xff0c;且具有低延迟、地复…...

基于vivado(语言Verilog)的FPGA学习(1)——了解viviado面板和编译过程

基于vivado&#xff08;语言Verilog&#xff09;的FPGA学习&#xff08;1&#xff09;——了解程序面板和编译过程 每日废话&#xff1a;最近找实习略微一些焦虑&#xff0c;不想找软件开发&#xff0c;虽然有些C和python基础&#xff08;之前上课学的&#xff09;&#xff0c;…...

PACS(CT、CR、DR、MR、DSA、RF医院影像管理系统源码)

PACS具体功能介绍&#xff1a; 病人、采集、观片、三维、报告、照相、退出、文件、图像采集、观片操作、三维、测量标注、诊断报告、照相打印、统计报表、系统管理、帮助、病人浏览器、选择数据源、打开图像、病人登记、工作列表、采集、打开画廊。 DICOM查询/获取&#xff1a…...

Centos7 安装Mysql8.0

1、到指定目录下下载安装包[rootVM-0-14-centos ~]# cd /usr/local/src2、下载mysql8[rootVM-0-14-centos src]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz3、解压mysql8, 通过xz命令解压出tar包&#xff0c; 然后通过t…...

2023年全国最新道路运输从业人员精选真题及答案18

百分百题库提供道路运输安全员考试试题、道路运输从业人员考试预测题、道路安全员考试真题、道路运输从业人员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 181.某客运企业拥有55辆营运客车&#xff0c;下列关于该企业设置…...

web worker的基本使用案例

文件目录如下 代码按照顺序分别如下 webworker.html <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewpo…...

机器看世界

博主简介 博主是一名大二学生&#xff0c;主攻人工智能研究。感谢让我们在CSDN相遇&#xff0c;博主致力于在这里分享关于人工智能&#xff0c;c&#xff0c;Python&#xff0c;爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主&#xff0c;博主会继续更新的&#xff0c…...

18、指数移动平均——EMA

简介 在深度学习中&#xff0c;经常会使用EMA&#xff08;指数移动平均&#xff09;这个方法对模型的参数做平均&#xff0c;以求提高测试指标并增加模型鲁棒。 指数移动平均&#xff08;Exponential Moving Average&#xff09;也叫权重移动平均&#xff08;Weighted Moving…...

用Go快速搭建IM即时通讯系统

WebSocket的目标是在一个单独的持久连接上提供全双工、双向通信。在Javascript创建了Web Socket之后&#xff0c;会有一个HTTP请求发送到浏览器以发起连接。在取得服务器响应后&#xff0c;建立的连接会将HTTP升级从HTTP协议交换为WebSocket协议。由于WebSocket使用自定义的协议…...

2023年江苏省职业院校技能大赛中职网络安全赛项试卷-学生组-任务书

2023年江苏省职业院校技能大赛中职网络安全赛项试卷-学生组-任务书 2023年江苏省职业院校技能大赛中职网络安全赛项试卷-学生组-任务书第一阶段 (300分) [手敲的任务书 点个赞吧]任务一:主机发现与信息收集 (50分)任务二: 应急响应 (60分)任务三:数字取证与分析(80分)任务四:…...

如何使用码匠连接 MariaDB

MariaDB 是一个免费的、开源的关系型数据库管理系统&#xff0c;由 MariaDB 的创始人 Michael Widenius 于 2010 年创建。它基于 MariaDB&#xff0c;但在对数据存储的处理中加入了一些自己的特性。MariaDB 相对于 MariaDB 而言&#xff0c;具有更好的性能和更好的兼容性&#…...

JavaEE简单示例——Bean的实例化

简单介绍&#xff1a; 在我们之前使用某个对象&#xff0c;那么就要创建这个类的对象&#xff0c;创建对象的过程就叫做实例化。对于Spring来说&#xff0c;实例化Bean的方式有三种&#xff0c;分别是构造方法实例化&#xff0c;静态方法实例化&#xff0c;实例工厂实例化。我…...

1229. 日期问题

目录 题目链接 一些话 流程 套路 ac代码 题目链接 1229. 日期问题 - AcWing题库 一些话 切入点 // 小明知道这些日期都在1960年1月1日至2059年12月31日。 // 这些日期采用的格式非常不统一&#xff0c;有采用年/月/日的&#xff0c;有采用月/日/年的&#xff0c;还有采用…...

Java 中的浅拷贝和深拷贝

无论是浅拷贝还是深拷贝&#xff0c;都可以通过 Object 类的 clone() 方法来完成&#xff1a; /*** 拷贝** author qiaohaojie* date 2023/3/5 15:58*/ public class CloneTest {public static void main(String[] args) throws Exception {Person person1 new Person(23, &…...

【java】 java开发中 常遇到的各种难点 思路方案

文章目录逻辑删除如何建立唯一索引唯一索引失效问题加密字段模糊查询问题maven依赖冲突问题&#xff08;jar包版本冲突问题&#xff09;sql in条件查询时 将结果按照传入顺序排序作为一个开发人员 总会遇到各种难题 本文列举博主 遇见/想到 的例子 &#xff0c;也希望同学们可以…...

抖音无水印视频下载终极指南:免费批量保存高清内容

抖音无水印视频下载终极指南&#xff1a;免费批量保存高清内容 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…...

S905M芯片盒子救砖实战:8189ETV无线与NAND存储的线刷固件修复指南

1. 救砖前的准备工作 当你发现手里的辽宁移动数码视讯Q5盒子突然变砖&#xff0c;先别急着扔。这种采用S905M芯片的盒子其实有很高的可玩性&#xff0c;尤其是搭配8189ETV无线模块和NAND存储的方案&#xff0c;只要掌握正确方法&#xff0c;救砖成功率很高。我前前后后折腾过二…...

CANopen协议核心机制与工业自动化应用实践

1. CANopen协议的核心机制解析 CANopen协议作为工业自动化领域的通信标准&#xff0c;其核心在于三个关键机制&#xff1a;对象字典、网络管理&#xff08;NMT&#xff09;以及过程数据对象&#xff08;PDO&#xff09;/服务数据对象&#xff08;SDO&#xff09;。理解这些机制…...

UKF vs EKF实战对比:在ROS和激光雷达数据下,谁对转弯车辆的跟踪更准?

UKF与EKF在ROS激光雷达车辆跟踪中的实战对比&#xff1a;谁更胜一筹&#xff1f; 在自动驾驶和机器人领域&#xff0c;状态估计算法的选择直接影响着系统的感知能力和决策质量。当车辆执行转弯动作时&#xff0c;传统的线性运动模型往往难以准确预测其轨迹&#xff0c;这时就需…...

Win10/Win11更新后飞行堡垒风扇快捷键失效?手把手教你找回丢失的FN+F5控制(附各型号解决方案对照表)

Win10/Win11更新后飞行堡垒风扇快捷键失效&#xff1f;深度修复指南与全型号适配方案 每次Windows大版本更新后&#xff0c;总有些硬件功能像变魔术一样消失——比如飞行堡垒系列笔记本的风扇控制快捷键FNF5。这背后其实是微软系统更新机制与厂商驱动之间的微妙博弈。作为从飞…...

AI推理冷启动归零实践,奇点大会实测数据:基于WASM+eBPF的Serverless边缘推理框架将P99延迟压至17ms,附开源代码仓链接

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生Serverless实践&#xff1a;2026奇点智能技术大会无服务器架构 在2026奇点智能技术大会上&#xff0c;AI原生Serverless成为核心范式——它不再将模型推理简单托管于函数即服务&#xff08;FaaS&…...

LED照明技术演进中的杰文斯悖论:从节能到光污染的双刃剑效应

1. 从“省电”到“光污染”&#xff1a;LED照明技术的双刃剑效应作为一名在电子工程和消费电子领域摸爬滚打了十几年的从业者&#xff0c;我见证了一波又一波的技术浪潮。从CRT到LCD&#xff0c;从机械硬盘到固态硬盘&#xff0c;每一次技术迭代都伴随着“更高效、更节能、更便…...

Sora提示词失效警告!:Instagram Reels专属Prompt架构(含12个平台敏感词规避指令+ASMR音画同步触发词库)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Sora提示词失效的底层归因与Instagram Reels内容生态断层分析 提示词语义坍缩现象 Sora模型在生成短视频时&#xff0c;对自然语言提示词的响应呈现显著退化&#xff1a;同一提示词&#xff08;如“su…...

告别编译迷茫:手把手教你读懂UEFI固件开发中的DSC文件(以EDK2 vUDK2018为例)

告别编译迷茫&#xff1a;手把手教你读懂UEFI固件开发中的DSC文件&#xff08;以EDK2 vUDK2018为例&#xff09; 当你第一次打开EDK2项目中的DSC文件时&#xff0c;是否被那些看似杂乱无章的配置项和宏定义搞得晕头转向&#xff1f;作为UEFI固件开发的核心配置文件&#xff0c;…...

三指拖拽革命:在Windows上解锁macOS级触控板体验的终极指南

三指拖拽革命&#xff1a;在Windows上解锁macOS级触控板体验的终极指南 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersD…...