fork download
  1. // "New" means new compared to previous level
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class SubstituteTeacher {
  6. public:
  7. SubstituteTeacher();
  8. ~SubstituteTeacher();
  9. SubstituteTeacher& operator=(const SubstituteTeacher& objToCopy);
  10.  
  11. // New: grade pointer member in SubstituteTeacher
  12. void SetSubjectAndGrade(string setSubject, int setGrade) {
  13. *grade = setGrade;
  14. *subject = setSubject;
  15. }
  16.  
  17. void Print();
  18. private:
  19. int* grade;
  20. string* subject;
  21. };
  22.  
  23. SubstituteTeacher::SubstituteTeacher() {
  24. subject = new string;
  25. *subject = "none";
  26. grade = new int;
  27. *grade = 0;
  28. }
  29.  
  30. SubstituteTeacher::~SubstituteTeacher() {
  31. delete grade;
  32. delete subject;
  33. }
  34.  
  35. // New: assignment operator also copies grade member
  36. SubstituteTeacher& SubstituteTeacher::operator=(const SubstituteTeacher& objToCopy) {
  37. if (this != &objToCopy) {
  38. delete subject;
  39. subject = new string;
  40. *subject = *(objToCopy.subject);
  41.  
  42. delete grade;
  43. grade = new int;
  44. *grade = *(objToCopy.grade);
  45. }
  46.  
  47. return *this;
  48. }
  49.  
  50. // New: Print function
  51. void SubstituteTeacher::Print() {
  52. cout << *grade << ": " << *subject << endl;
  53. }
  54.  
  55. int main() {
  56. SubstituteTeacher msWong;
  57. SubstituteTeacher mrPark;
  58. SubstituteTeacher mrDorf;
  59.  
  60. msWong.SetSubjectAndGrade("Math", 1);
  61. mrPark.SetSubjectAndGrade("History", 5);
  62. mrDorf.SetSubjectAndGrade("Art", 3);
  63.  
  64. mrPark = msWong;
  65. msWong = mrDorf;
  66.  
  67. mrPark.Print();
  68. msWong.Print();
  69.  
  70. return 0;
  71. }
  72.  
Success #stdin #stdout 0s 5280KB
stdin
Standard input is empty
stdout
1: Math
3: Art