제대로 '='연산자를 오버로드하여 한 학생의 정보를 다른 학생의 과제에 할당하는 방법을 알아내는 데 어려움이 있습니다. 나는 이것에 익숙하지 않아서 큰 시간을 망쳐 놓을 수 있었다. 어떤 도움을 주셔서 감사합니다!연산자 오버로드 문제
#include <iostream>
using namespace std;
class Student
{
public:
void input()
{
cout << "Please enter student's name: ";
cin >> name;
cout << "Please enter the number of classes " << name << " is taking: ";
cin >> numClasses;
classList = new string[numClasses];
cout << "Please enter the list of classes " << name << " is taking: ";
for(int i = 0; i < numClasses; i++)
{
cin >> classList[i];
}
}
void print()
{
cout << "Student's name: " << name << endl;
cout << "Number of classes " << name << " is taking: " << numClasses << endl;
cout << "List of classes " << name << " is taking: " << endl;
for(int i = 0; i < numClasses; i++)
{
cout << classList[i] << endl;
}
}
void resetClasses()
{
name.clear();
numClasses = 0;
delete [] classList;
}
Student operator= (Student s)
{
Student temp;
temp.name = s.name;
temp.numClasses = s.numClasses;
temp.classList = s.classList;
return temp;
}
private:
string name;
int numClasses;
string *classList;
};
int main()
{
Student s1, s2;
s1.input();
cout << "Student 1's data:" << endl;
s1.print();
s2 = s1;
cout << endl << "Student 2's data after assignment from student 1: " << endl;
s2.print();
s1.resetClasses();
cout << endl << "Student 1's data after reset:" << endl;
s1.print();
cout << endl << "Student 2's data, should still have original classes: " << endl;
s2.print();
}
'classList'를'std :: vector'로 만들고 할당 연산자, 복사 생성자, 소멸자 등을 제공 할 필요가 없습니다. –
juanchopanza
클래스에는 메모리를 정리할 사용자 정의 소멸자가 없습니다. 할당 연산자와 복사 생성자는 말할 것도 없습니다. – PaulMcKenzie