Вопрос о назначении конструктора по умолчанию для * this в C ++?

Я читаю текст на C ++. В примере текст написан:

class Student {
     int no;
     char grade[M+1];
 public:
     Student();
     Student(int, const char*);
     const Student& set(int, const char*);
     void display() const;
 };

Student::Student() {
    no = 0;
    grade[0] = '\0';
 }

 Student::Student(int n, const char* g) { 
     *this = Student(); // initialize to empty
     set(n, g);         // validate, reset if ok
 }

Я не понимаю эту строку: * this = Student ();

Почему мы должны это делать, просто вызывая Student (); также вызывает вызов конструктора по умолчанию?

Я читаю текст на C ++. В примере написано:

class Student {
     int no;
     char grade[M+1];
 public:
     Student();
     Student(int, const char*);
     const Student& set(int, const char*);
     void display() const;
 };

Student::Student() {
    no = 0;
    grade[0] = '\0';
 }

 Student::Student(int n, const char* g) { 
     *this = Student(); // initialize to empty
     set(n, g);         // validate, reset if ok
 }

Я не понимаю эту строку: * this = Student ();

Почему мы должны это делать, просто вызывая Student (); также вызывает вызов конструктора по умолчанию?

Я читаю текст на C ++. В примере написано:

class Student {
     int no;
     char grade[M+1];
 public:
     Student();
     Student(int, const char*);
     const Student& set(int, const char*);
     void display() const;
 };

Student::Student() {
    no = 0;
    grade[0] = '\0';
 }

 Student::Student(int n, const char* g) { 
     *this = Student(); // initialize to empty
     set(n, g);         // validate, reset if ok
 }

Я не понимаю эту строку: * this = Student ();

Почему мы должны это делать, просто вызывая Student (); также вызывает вызов конструктора по умолчанию? Спасибо

5
задан ipkiss 26 April 2011 в 09:48
поделиться