Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

call destructor > call constructor, code review, comments

Ostatnio zmodyfikowano 2024-03-13 22:56
Autor Wiadomość
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
C/C++
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.
P-180941
1 « 2 »
Poprzednia strona Strona 2 z 2