call destructor > call constructor, code review, comments
Ostatnio zmodyfikowano 2024-03-13 22:56
nanoant20 Temat założony przez niniejszego użytkownika |
» 2024-03-13 22:56:21 Kod nie powinien wymagać wprowadzania żadnych danych, zwłaszcza gdy ich nie określisz. o.k. będę o tym pamiętał Okroiłem ten kod do bardziej minimalnej formy i albo reprodukuje problem, albo źle zgadłem niewiadome w twoim pytaniu. tak reprodukuje problem, właśnie o to chodzi, dobrze zrozumiałeś już teraz wiem żeby uniknąć nieoczekiwanych zachowań, należy jawnie zdefiniować konstruktor kopiujący. konstruktor kopiujący jest wywoływany m.in. przy przekazywaniu obiektu przez wartość lub gdy funkcja zwraca obiekt przez wartość dodałem "copy constructor" i poprawiłem "default constructor", żeby był bardziej klarowny i wszystko teraz się zgadza Student( const string & name_, const string & lastname_, int age_, vector < double > grades_ ) : name( name_ ) , lastname( lastname_ ) , age( age_ ) , grades( move( grades_ ) ) { cout << "default constructor" << "\n"; } Student( const Student & other ) : name( other.name ) , lastname( other.lastname ) , age( other.age ) , grades( other.grades ) { cout << "copy constructor" << "\n"; }
Merci, au revoir. |
|
1 « 2 » |