对象数组:它是一个数组,其元素为类类型。它可以声明为任何数据类型的数组。
句法:
classname array_name [size];
下面是通过计算 3 名学生的最高分来说明对象数组的 C++ 程序:
C++
// C++ program to illustrate the
// passing the array of objects
// to function parameter
#include
using namespace std;
// Class Student
class Student {
int roll;
char name[50];
int total;
public:
// Function to input Roll Number
void getdata()
{
cout << "Enter your Roll: "
<< endl;
cin >> roll;
cout << "Enter your Name: "
<< endl;
cin.ignore();
cin.get(name, 50);
cout << "Enter your Total "
<< "Marks: " << endl;
cin >> total;
}
// Function to pass the array of
// objects
int pos(Student obj[], int size)
{
int pos = 0;
int max = obj[0].total;
// Traverse the array of object
for (int i = 0; i < size; i++) {
if (obj[i].total > max) {
max = obj[i].total;
pos = i;
}
}
return pos;
}
// Function to display the students
// details
void putdata()
{
cout << "Roll: " << roll
<< endl;
cout << "Name: " << name
<< endl;
cout << "Total Marks: "
<< total << endl;
}
};
// Function that have array of objects
void arrayOfObjects()
{
Student s[3], s1;
int pos;
for (int i = 0; i < 3; i++) {
s[i].getdata();
}
pos = s1.pos(s, 3);
cout << "Highest scoring Student"
<< " Details:" << endl;
s[pos].putdata();
return 0;
}
// Driver Code
int main()
{
// Function Call
arrayOfObejects();
return 0;
}
输出:
说明:
- 在 Student 类的main()函数对象中创建:
- 这里,第一个对象数组是s[3] ,另一个是s1 (一个简单的对象)。
- 在 for 循环中,已采用 3 组用户输入(即,用户将在此处输入 3 组学生的姓名、卷名、总分)。
- 然后通过pos(Student obj [], int size)成员函数的s1对象传递s[3] (包含学生详细信息集的对象数组)及其大小。
- pos(Student obj [], int size)函数,返回的是总分最高的学生集合的对象的位置,即( s[3]对象数组的0、1或2索引位置),存储在pos = s1.pos(s, 3) 。
- 显示部分:调用显示函数,使用S[pos].putdata() 。
- 这 放置数据() 函数是显示学生类的对象详细信息。
- 这里,在s 中发送pos (存储最高学生集对象的索引位置),以显示总分最高的学生详细信息。
想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解基础加 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程。