我很难弄清楚如何正确地重载'='操作员以将一个学生的信息分配给另一个人的任务。我是新来的,所以我可以把它弄糟了。谢谢你的帮助!操作员超载故障
#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'一个'标准::矢量'你不必提供赋值操作符,拷贝构造函数,析构函数,什么... –
juanchopanza
你的类没有一个用户定义的析构函数清理内存,更不用说赋值运算符和复制构造函数了。 – PaulMcKenzie