C++ 对象数组(整理)

news2024/11/17 19:52:20

C++对象数组

  • 一、对象数组的定义
  • 二、对象数组的特性
  • 三、对象数组的使用
    • 3.1 构造函数没有参数
    • 3.2 构造函数有一个参数
    • 3.3 构造函数有多个参数
  • 四、为什么要使用对象数组?

一、对象数组的定义

所谓对象数组,指每一个数组元素都是对象的数组,即若一个类有若干个对象,我们把这一系列的对象用一个数组来存放。对象数组的元素是对象,不仅具有数据成员,而且还有函数成员。

二、对象数组的特性

1、在建立对象数组的时候需要调用构造函数,有多少个对象就要调用多少次构造函数。

2、如果对象数组含有析构函数,那么建立对象数组时按每个元素出现的顺序调用构造函数,按相反的顺序调用析构函数。

3、对象数组的初始化究竟是什么形式,本质上取决于所属类的构造函数。
如果对象数组所属类有带参数的构造函数,可用初始化列表按顺序调用构造函数,使用复制初始化来初始化每个数组元素。

如果对象数组所属类有单个参数时,定义数组时可以直接在初始化列表中提供实参。

对象数组创建时若没有初始化,则其所属类要么有合成默认构造函数,要么定义无参数的构成函数或全部参数为默认参数的构造函数。

三、对象数组的使用

3.1 构造函数没有参数

各元素对象的初值要求为相同的值时,应该在类中定义不带参数的构造函数或者是默认构造函数。

#include<iostream>
using namespace std;
class exam {
public:
	exam() {
		x = 2022;
	}
	int getX() {
		return x;
	}
	~exam() {};
private:
	int x;
};
int main()
{
	exam a[5];
	for (int i = 0; i < 5; i++)
	{
		cout << a[i].getX() << " ";
	}
	cout << endl;
	return 0;
}

在这里插入图片描述

3.2 构造函数有一个参数

#include<iostream>
using namespace std;
class exam {
public:
	exam() {
		x = 2022;
	}
	exam(int a) {
		x = a;
	}
	int getX() {
		return x;
	}
	~exam() {};
private:
	int x;
};
int main()
{
	exam a[5]={0,1,2,3,4};
	exam b[5] = { 0,1};
	exam c[5];
	for (int i = 0; i < 5; i++)
	{
		cout << a[i].getX() << " ";
	}
	for (int i = 0; i < 5; i++)
	{
		cout << b[i].getX() << " ";
	}
	for (int i = 0; i < 5; i++)
	{
		cout << c[i].getX() << " ";
	}
	cout << endl;
	return 0;
}

在这里插入图片描述

3.3 构造函数有多个参数

各元素对象的初值要求为不同的值时,需要定义带形参的构造函数。

#include<iostream>
#include<cmath>
using namespace std;
class Complex{
	public:
		Complex(double r=0.0,double i=0.0):real(r),imag(i){
		}
		~Complex(){
			cout<<"Destructor called."<<endl;
		}
		double abscomplex(){
			double t;
			t=real*real+imag*imag;
			return sqrt(t);
		}
	private:
		double real;
		double imag;
};
int main(){
	Complex com[3]={  //定义对象数组
		Complex(1.1,2.2),  //调用构造函数,为第1个对象数组元素提供实参1.1和2.2 
		Complex(3.3,4.4),  //调用构造函数,为第2个对象数组元素提供实参3.3和4.4 
		Complex(5.5,6.6)  //调用构造函数,为第3个对象数组元素提供实参5.5和6.6	
	};
	cout<<"复数1的绝对值是:"<<com[0].abscomplex()<<endl;
	cout<<"复数1的绝对值是:"<<com[1].abscomplex()<<endl;
	cout<<"复数1的绝对值是:"<<com[2].abscomplex()<<endl;
 	return 0;
}

四、为什么要使用对象数组?

C++中使用对象数组的主要原因是可以方便地创建多个对象,并且可以通过下标访问和操作这些对象。对象数组可以用于存储和处理大量的数据。
例如在游戏开发中,可以使用对象数组来存储和管理游戏中的角色、道具等信息。此外,对象数组还可以用于实现一些数据结构,例如队列、栈等。

在使用对象数组时,需要注意对象的构造函数和析构函数的调用,以及对象数组的初始化方式。

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

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

相关文章

原来服务器这么有用-创建一个自己的云存储:FileBrowser

原来服务器这么有用-创建一个自己的云存储&#xff1a;FileBrowser 1、介绍 filebrowser 是一个使用go语言编写的软件&#xff0c;功能是可以通过浏览器对服务器上的文件进行管理。 Filebrowser提供了一个在指定目录内进行文件管理的界面&#xff0c;可以用于上传、删除、预览…

CSS与基本选择器

<div class"c1" id"d1"></div> CSS基本知识 什么是css&#xff1a;CSS&#xff08;Cascading Style Sheet&#xff0c;层叠样式表)定义如何显示HTML元素。 当浏览器读到一个样式表&#xff0c;他就会按照这个样式l来进行渲染。其实就是让HT…

LDAP服务搭建,phpLDAPadmin+python管理服务

LDAP 是什么&#xff1f; LDAP&#xff08;Lightweight Directory Access Protocol&#xff09;是一种轻量级的目录访问协议。它最初是用于在 TCP/IP 网络上访问 X.500 目录服务&#xff0c;但由于其简单和高效的特点&#xff0c;现在广泛应用于企业、组织等系统中的身份验证、…

yolov5的ptq量化流程

本次试验是基于yolov5n的模型进行ptq、qat的量化以及敏感层分析的试验。 Post-Training-Quantization(PTQ)是目前常用的模型量化方法之一。以INT8量化为例,PTQ处理流程如下: 首先在数据集上以FP32精度进行模型训练,得到训练好的baseline模型; 使用小部分数据对FP32 basel…

第2篇 机器学习基础 —(3)机器学习库之Scikit-Learn

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。Scikit-Learn&#xff08;简称Sklearn&#xff09;是Python 的第三方模块&#xff0c;它是机器学习领域当中知名的Python 模块之一&#xff0c;它对常用的机器学习算法进行了封装&#xff0c;包括回归&#xff08;Regressi…

这个学习方式,用的太及时了!

学校思政学习是培养未来社会精英、提升学生政治觉悟的重要环节。在学生的成长过程中&#xff0c;思政学习扮演着至关重要的角色&#xff0c;不仅有助于提高学生的政治素质&#xff0c;还能够培养他们的思维能力、价值观念&#xff0c;使他们更好地为社会和国家的发展贡献力量。…

c语言练习(9周)

输入样例11输出样例7.0980 #include<stdio.h> int main() {int n, i;double s 1,a1;scanf("%d", &n);for (i 2; i < n; i) {a 1 / (1a);s a;}printf("%.4lf", s);return 0; } 题干输入10个整数&#xff0c;分别按输入正序、逆序显示。输…

input 调起键盘 ,键盘距离输入框底部太近

input 调起键盘 &#xff0c;键盘距离输入框底部太近 解决方法 cursorSpacing‘20’ 单位是 ‘px’ <input cursorSpacing20 type"text" v-model"replyMain" />距离底部距离 20px &#xff0c;输入框距离键盘距离是20px

第五章 I/O管理 八、缓冲区管理

目录 一、定义 二、缓冲区的作用 三、单缓冲 1、定义&#xff1a; 2、例子1 3、例子2 四、双缓冲 1、定义&#xff1a; 2、例子1&#xff1a; 3、例子2&#xff1a; 五、单缓冲和双缓冲的区别 六、循环缓冲区 1、定义&#xff1a; 七、缓冲池 1、定义&#xff1a;…

岩土工程监测利器:多通道振弦数据记录仪应用铁路隧道监测

岩土工程监测利器&#xff1a;多通道振弦数据记录仪应用铁路隧道监测 岩土工程监测是工程建设中十分重要的一环&#xff0c;特别是在铁路隧道工程中&#xff0c;岩土工程监测更是不可或缺的一项。其中&#xff0c;振弦数据记录仪是一种非常重要的仪器&#xff0c;可以帮助监测…

思维训练第三课 反意疑问句

系列文章目录 文章目录 系列文章目录前言一、什么是反意疑问句二、反意疑问句的回答&#x1f49a;主系表/主谓宾&#xff08;肯定&#xff09;&#xff0c;否定提问1、一般现在时2、一般过去时3、一般将来时4、现在完成时 &#x1f49b; 主谓宾1、一般现在2、一般过去3、一般将…

2023最新版本 FreeRTOS教程 -2-任务创建-验证(动态创建)

API函数 BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,const configSTACK_DEPTH_TYPE usStackDepth,void * const pvParameters,UBaseType_t uxPriority,TaskHandle_t * const pxCreatedTask )API函数参数理解 -1-任务函数就是和函数指针 -2-名称自定义 -3-堆栈大小自…

041-第三代软件开发-QCustcomPlot波形标注

第三代软件开发-QCustcomPlot波形标注 文章目录 第三代软件开发-QCustcomPlot波形标注项目介绍QCustcomPlot波形标注效果初始化绘制 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML…

C++11线程

C11线程 创建线程 创建线程需要包含头文件<thread>&#xff0c;使用线程类std::thread 构造函数 默认构造函数 thread() noexcept; 默认构造函数&#xff0c;构造一个线程对象&#xff0c;但它不会启动任何实际的线程执行。 任务函数构造函数 template< class Fun…

计算机毕业设计选题推荐-短文写作竞赛微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

物联网的音视频基础设施,谁在提供最优解?

声网在作为RTC服务商的同时&#xff0c;也更在成为赛道的核心布道者和推动者&#xff0c;通过一个个场景的逐步落地&#xff0c;进而推动RTC行业产生更大的想象力。 作者|斗斗 出品|产业家 某海外物流企业的控制室内&#xff0c;工作人员正聚精会神地注视着高清视频画面&a…

深入浅出排序算法之快速排序(重要)⭐⭐⭐⭐⭐

目录 1. 算法介绍⭐⭐⭐⭐⭐ 1.1 图示解析 2. 执行流程和代码实现 2.1 挖坑法⭐⭐⭐⭐ 2.2 Hoare法⭐⭐⭐⭐ 2.3 前后指针法&#xff08;了解即可&#xff09; 2.4 非递归实现快速排序&#xff08;了解即可&#xff09; 4. 性能分析 5. 算法改进 5.1 三数选中法 5.2…

ChatGPT正在测试原生文件分析功能,DALL·E 3能P图啦!

10月29日&#xff0c;有部分用户在社交平台上分享&#xff0c;ChatGPT Plus正在测试原生文件上传、分析功能&#xff0c;可以通过文本问答的方式&#xff0c;对上传的PDF等数据文件进行提问、搜索。 例如&#xff0c;上传一份50页的员工手册PDF文件&#xff0c;然后向ChatGPT提…

基于Qt Designer 操作教程

​本章将简介使用 Qt Creator 里自带的 Qt Designer,使用 Qt Designer 比较方便的构造 UI 界面。特点是方便布局,比较形象。 ## 使用 UI 设计器开发程序 在这小节里我们继续学习如何使用 Qt Designer 开发程序,Qt Designer 是属于 Qt Creator 的一个功能而已,大家不要搞混…

一款针对SpringBootEnv页面进行快速漏洞利用

参考GitHub - 0x727/SpringBootExploit: 项目是根据LandGrey/SpringBootVulExploit清单编写&#xff0c;目的hvv期间快速利用漏洞、降低漏洞利用门槛。 &#x1f4dd; TODO 支持Eureka XStream deserialization RCE支持Fastjson 内存马注入支持更多可以使用JNDI内存马注入反序…