C++对象数组

对象数组是什么

数组对象就是大批量实例化对象的一种方法,例如:Student stu 实例化对象,如果有好几百个对象应该怎么办?这时候就用到了对象数组,顾名思义,就是吧所有要实例化的对象都放到一个组里面,然后直接实例化这个组,就像这样:Student stu[100] 这样一次性实例化100个对象。stu[1] 这就是对象数组里面的一个对象,stu[1].m_iX = 10 这就是给对象的属性进行定义。

访问数组中成员的方式

在这里插入图片描述
示例:

int main()
{Student stu[3]; // 通过栈的方式实例化对象数组stu[1].m_iX = 10; // 给对象数组里面的第二个对象赋值Student *p = new Student[3]; // 通过堆的方式实例化对象数组p[0].m_iY = 20;  // 给数组对象里面的一个对象p[0]添加属性 m_iYp->m_iY = 20;delete []p;p = NULL;system("pause");
}

完整代码:

#include<iostream>
#include<stdlib.h>
#include"Coordinate.h"
using namespace std;class Coordinate
{
public:Coordinate();~Coordinate();
public:int m_iX; // 横坐标int m_iY; // 纵坐标
};Coordinate::Coordinate()
{cout<<"构造函数"<<endl;
}
Coordinate::~Coordinate()
{cout<<"析构函数"<<endl;
}int main(void)
{// 从栈上实例化对象数组Coordinate coor[3]; coor[0].m_iX = 3;    // 位对象数组中的第一个对象的属性初始化coor[0].m_iY = 5;// 从堆中实例化对象数组Coordinate *p = new Coordinate[3];p->m_iX = 7;   // 通过指针的方式访问对象数组中的第一个对象p[0].m_iY = 9;  // 通过索引的方式访问对象数组中的第一个对象p++; //p = p+1,  p += 1 指针位置往前移一个位置p->m_iX = 11; // 此时访问的是第二个对象p[0].m_iY = 13;  // 因为p往前移动了一个元素,所以现在的p[0]是第二个元素p[1].m_iX = 15;  // 因为p往前移动了一个元素,所以现在的p[1]是第三个元素p++;  // p指针再往前移动一个位置,到达第二个位置p->m_iY = 17;// 遍历第一个数组int i,j;for(i=0;i<3;i++){cout<<"横坐标:"<<coor[i].m_iX<<endl;cout<<"纵坐标:"<<coor[i].m_iY<<endl;}// 遍历第一个数组for(j=0;j<3;j++){cout<<"p_x "<<p->m_iX<<endl;cout<<"p_y "<<p->m_iY<<endl;p--; // 因为通过两次p++,此时p的位置已经是在对象数组的最后一个,所以要用p--,反方向遍历}// 释放内存// 因为上面p-- 执行了3次所以此时p的位置并不在对象数组的第一位,而在其前一位,// 所以要将p往前移动一位,再去释放内存。p++;  delete []p;p = NULLsystem("pause");return 0;
}

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

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

相关文章

镜像安装linux选择内核版本,在CentOS和Ubuntu中安装Linux Kernel 4.13.10

Linus Torvalds 在 10 月 17 日星期五正式发布了稳定版 Linux Kernel 4.13.10&#xff0c;这个最新版本发布了新功能&#xff0c;进行了诸多修复和问题改进。下面将向大家介绍在 CentOS 和 Ubuntu 中手动安装、更新 Linux Kernel 4.13.10 的方法&#xff0c;当然&#xff0c;这…

linux设备进入睡眠所需时间,android linux 休眠 深度睡眠 查看 方法 调试【转】

在Android移动设备中&#xff0c;有时按下Power键(未接电源&#xff0c;USB)时&#xff0c;因其它apk程序获取了wake_up锁未释放或程序BUG导致未释放&#xff0c;造成未能进入深度睡眠&#xff0c;从而加大了耗电量&#xff0c;减少了待机时间&#xff0c;参考如下图&#xff0…

linux qt5.9交叉编译,QT5.9移植

&#xff11;&#xff0e;下载&#xff31;&#xff54;源码Qt源码下载地址&#xff1a;Index of /archive/qt 其他源码和其他安装包都是有的。2&#xff0e;解压源码$ mkdir qt5.9$cd qt5.9将下载文件拷贝到当前目录下面。解压$ xz -d qt-everywhere-opensource-src-5.9.7.t…

linux wps 公式编辑器,WPS 2012数学公式编辑器的使用方法(详细图解)

做数学或物理课件时很多公式是件比较头痛的事。时常陷入无穷的拼接法中&#xff0c;用一个一个文本框组合成复杂的公式。其实WPS 2012e为我们提供了一个功能强大的公式编辑器Equation Editor&#xff0c;可以帮助我们解决这些问题。1、插入公式将光标放置于欲插入公式的位置&am…

linux客户端 存活检测,Linux下客户端检测服务器的 heartbeat

客户端代码&#xff0c;和一般的客户端不一样#include#include#include#include#include#include#include#include#include#include#include #include #define MAXDATASIZE 100int main(){int sockfd,nbytes,serv_port;char buf_serv_ip[16],buf[260];struct sockaddr_in serv_…

python object单引号变成双引号_Python学习第163课--Linux命令行中的单引号和双引号...

【每天几分钟&#xff0c;从零入门python编程的世界&#xff01;】我们都知道引号的作用就是为了引用&#xff0c;比如引用别人说的话&#xff0c;这句话就放在引号里面。而Linux命令行中的single quote(单引号)和dubble quote(双引号)有不同的作用。●双引号linux命令中双引号…

C语言条件循环语句执行步骤,C语言中for语句的执行过程是什么?

C语言中for语句的执行过程是&#xff1a;1、会先判断条件表达式是否成立&#xff0c;如果条件成立则执行中间循环体&#xff0c;执行完中间循环体后接着执行末尾循环体 &#xff1b;2、在执行完末尾循环体后对条件表达式再次判断&#xff0c;若条件还成立&#xff0c;则继续重复…

c语言规范标准中英文,C语言中英文翻译资料.doc

C语言中英文翻译资料.docThe C Programming LanguageC is a high-level programming language developed by Dennis Ritchie and Brian Kernighan at Bell Labs in the mid-1970s. Although originally designed as a systems programming language, C has proved to be a powe…

SQL语言深入

数据库系统 数据库系统主要有以下 3 个组成部分&#xff1a; 1 . 数据库&#xff1a;用于存储数据的地方。 2 . 数据库管理系统&#xff1a;用于管理数据库的软件。 3 . 数据库应用程序&#xff1a;为了提高数据库系统的处理能力所使用的管理数据库库的软件补充。 数据库管…

加法的横式竖式教案c语言,20以内竖式加减法教案

【www.ahanw.cn--活动致辞】活动意图&#xff1a;数学的加减法运算很重要。特别是20以内的加减法是各种数字运算的基础。学好20以内的加减法&#xff0c;有利于活化孩子的头脑&#xff0c;发展孩子的思维。活动目标&#xff1a;1、感知进位加、退位减的算法&#xff0c;整理和归…

c语言平面向量加法考点,平面向量的加减法怎么死活都不会?有没有什么口诀?例如:向量AB+BC=?向量OA-OB=?向量AB-CB=?有没有什么口诀!...

设a(x,y),b(x,y).1、向量的加法向量的加法满足平行四边形法则和三角形法则.ABBCAC.ab(xx,yy).a00aa.向量加法的运算律&#xff1a;交换律&#xff1a;abba&#xff1b;结合律&#xff1a;(ab)ca(bc).2、向量的减法如果a、b是互为相反的向量,那么a-b,b-a,ab0.0的反向量为0AB-ACC…

neo4j browser执行脚本后不提示用时_还不懂什么是分层自动化测试的,有赞的实践经历告诉你...

来源&#xff1a;https://testerhome.com/articles/19109# 背景先理一下自动化测试的概念&#xff0c;从广义上来说&#xff0c;一切通过工具(程序)的方式来代替或者辅助手工测试的行为都可以成为自动化。从狭义上来说&#xff0c;通过编写脚本的方式&#xff0c;模拟手工测试…

android+自定义alertdialog,安卓自定义AlertDialog

AlertDialog.png使用方法 example:DialogUtil.showAlertDialog(getActivity(), R.mipmap.restart, "退出提示", "你确定要退出吗&#xff1f;"),"确定", "取消", true, new DialogUtil.AlertDialogBtnClickListener() {Overridepublic…

mysql datetime 后面带了很多0_面试官:MySQL 表设计要注意什么?

作者 孤独烟来自公众号&#xff1a;孤独烟引言大家应该知道烟哥最近要(tiao 咳咳咳)&#xff0c;嗯&#xff0c;不可描述&#xff01;随手讲其中一部分知识&#xff0c;都是一些烟哥自己平时工作的总结以及经验。大家看完&#xff0c;其实能避开很多坑。而且很多问题&#xff0…

android studio viewo,Android Studio 之 ViewModel

ViewModel 是 JetPack 类库中的一个功能&#xff0c;可以保存控件的状态 &#xff0c;在整个Activity 生命周期中&#xff0c;状态不会失效如屏幕翻转时&#xff0c;状态可保留&#xff0c;不会失效&#xff01;与 LiveData 配合使用&#xff01;配合 Room 进行 Sqlite 操作数据…

极域电子书包课堂管理系统_朝阳群众说小康 | 从黑板课本到VR互动课堂、电子书包,朝阳的课堂如此有趣!...

教育变迁一支粉笔、一块黑板、一本教材曾经是教师上课沿袭了几十年的“三大法宝”随着时代发展当科技遇上了教育课堂上又会擦出什么样的火花呢&#xff1f;今天&#xff0c;小朝带你走进咱朝阳的校园一探究竟不一young的朝阳教育近日&#xff0c;教育部“基于教学改革、融合信息…

安装引导黑屏_给电脑安装系统老是装不上,重启就黑屏,原来是这项设置在作怪!...

很多人和我反映说&#xff1a;给电脑安装系统重启电脑后就黑屏无法正确解压系统&#xff0c;这个问题大家有没有遇到呢&#xff1f;遇到这个问题的人可能会认为自己电脑的硬盘坏了&#xff0c;明明已经把需要的Windows操作系统拷贝到硬盘已经成功了&#xff0c;重启电脑准备解压…

如果表不存在则创建_当创建一个文件的时候,操作系统发生了什么

操作文件是我们平时经常有的操作。但是我们可能并不是很了解他们原理&#xff0c;比如为什么删除一个很大的文件&#xff0c;会非常快&#xff1f;创建一个文件的时候&#xff0c;系统发生了什么&#xff1f;为什么删除的文件&#xff0c;还可以恢复&#xff1f;知其然知其所以…

两个html页面之间通讯,面试官:前端跨页面通信,你知道哪些方法?

引言在浏览器中&#xff0c;我们可以同时打开多个Tab页&#xff0c;每个Tab页可以粗略理解为一个“独立”的运行环境&#xff0c;即使是全局对象也不会在多个Tab间共享。然而有些时候&#xff0c;我们希望能在这些“独立”的Tab页面之间同步页面的数据、信息或状态。正如下面这…

默认选中_双击dwg图纸,怎么设置默认天正打开?

文尾左下角阅读原文看视频教程好课推荐&#xff1a;零基础CAD&#xff1a;点我CAD室内&#xff1a;点我 周站长CAD&#xff1a;点我CAD机械&#xff1a;点我 Bim教程&#xff1a;点我CAD建筑&#xff1a;点我CAD三维&#xff1a;点我全屋定制&#xff1a;点我 ps教程&#xff1…