6 Computing IlI Lab-6 This is a modification of a previous lab exercise done by
ID: 3919680 • Letter: 6
Question
6
Computing IlI Lab-6 This is a modification of a previous lab exercise done by you but in this we will review the working of constructor, copy constructor, copy assignment operator and destructor. There is a collection of student records to be maintained for an examination - including the variables studentID, studentFirstName and studentGrade (integer). The program should prompt for, input the data and keep records in dynamic array. Initialize the default studentFirstName as XXXX and the default grade as 0. Implement your own constructor, copy constructor, copy assignment operator and destructor. Consider the passing grade as 8 (out of 10). Create a second array of passed students and a third array which just copies this array. Print the output of the test run given below. Additionally, display when were the following called (a) constructor (b) copy constructor (c) copy assignment operator (d) destructor-and explain it to your instructor (you could uncomment the code for this display and show in the next run with fewer data input) Test run How many records?3 Enter student record (studentlD studentFirstName studentGrade) 01660000 Ramji 6 01670000 Sitaji 9 00199999 Hanumanji 8 Pass records 01660000 Sitaji 9 00199999 Hanumanji 8 Copied 2 pass records 01660000 Sitaji 9 00199999 Hanumanji 8 Any more records?(y/n) y How many records?1 Enter student record (studentlD studentFirstName studentGrade) 01990000 Shivji 9Explanation / Answer
#include<iostream>
#include<string>
using namespace std;
class Student {
private:
string studentID;
string studentFirstName;
int studentGrade;
public:
Student(){
studentID = "";
studentFirstName = "XXXX";
studentGrade = 0;
}
Student(string i, string f, int g){
studentID = i;
studentFirstName = f;
studentGrade = g;
}
Student(const Student &s){
studentID = s.studentID;
studentFirstName = s.studentFirstName;
studentGrade = s.studentGrade;
}
~Student() {
}
void operator = (Student &s){
studentID = s.studentID;
studentFirstName = s.studentFirstName;
studentGrade = s.studentGrade;
}
int getStudentGrade(){
return studentGrade;
}
string getStudentID(){
return studentID;
}
string getStudentFirstName(){
return studentFirstName;
}
void setStudentID(string a){
studentID = a;
}
void setStudentFirstName(string a){
studentFirstName = a;
}
void setStudentGrade(int a){
studentGrade = a;
}
void disp(){
cout << studentID << " " << studentFirstName << " " << studentGrade << endl;
}
};
void Display(Student data[], int num){
for (int i = 0; i<num; i++){
data[i].disp();
}
}
int main(){
string id, name;
int grade;
Student totalpass[50];
int passcount = 0;
while (true){
cout << "How many records? ";
int n;
cin >> n;
cout << "Default Constructor Invoked ";
Student *data = new Student[n];
Student *pass = new Student[n];
for (int i = 0; i<n; i++){
cin >> id >> name >> grade;
data[i].setStudentID(id);
data[i].setStudentFirstName(name);
data[i].setStudentGrade(grade);
}
int count = 0;
cout << " Copy Assignment operator invoked ";
for (int i = 0; i<n; i++){
if (data[i].getStudentGrade() >= 8){
pass[count] = data[i]; //Assignment operator
count++;
}
}
cout << "Pass Records ";
cout << "Copy Constructor invoked for displaying ";
Display(pass,count); //Copy Construtor
cout << " Copy Assignment operator invoked ";
for (int i = 0; i<count; i++){
totalpass[passcount] = pass[i]; //Assignment operator
passcount++;
}
cout << "Copied " << count << " pass records ";
cout << "Copy Constructor invoked for displaying ";
Display(totalpass,passcount);
cout << " Destructor invoked ";
delete [] data; // destructor called
delete [] pass;
cout << "Any more records?(y/n): ";
string line;
cin >> line;
if (line[0] == 'n')
break;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.