C++ 对象数组(整理)

一、对象数组的定义

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

二、对象数组的特性

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

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

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: 在C++中,可以使用字符数组或者string对象来表示字符串。字符数组是一种固定长度的字符序列,而string对象是一个动态长度的字符串容器。\[1\]使用字符数组时,可以通过初始化或者赋值来表示字符串。例如,char ch1\[\] = {"Hello Tricker"}; 或者 char ch2\[\]{"Hello Tricker"};\[3\]而使用string对象时,可以通过拼接或者附加来操作字符串。例如,可以使用加号运算符来拼接字符串,如 string str1 = "Hello "; string str2 = "Tricker"; string str3 = str1 + str2;\[2\]另外,还可以使用+=运算符来将一个字符串附加到另一个字符串的末尾,如 str1 += str2;\[2\]总的来说,string对象相比字符数组更加方便简洁,可以更灵活地操作字符串。 #### 引用[.reference_title] - *1* [【c++】用string类定义字符串数组](https://blog.csdn.net/qqyuanhao163/article/details/47274205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【C++知识点整理:06String类】](https://blog.csdn.net/qq_39544982/article/details/123454823)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值