Witam,
Jeśli zmienna w klasie jest const, to w jaki sposób przypisać ją w konstruktorze kopiującym oraz w operatorze przypisania?
Witam,
Jeśli zmienna w klasie jest const, to w jaki sposób przypisać ją w konstruktorze kopiującym oraz w operatorze przypisania?
W przypadku konstruktora używasz listy inicjalizacyjnej tzn
A(const A& source):x(source.x), y(source.y){
//cośtam dalej
}
W przypadku operatora przypisania to niemożliwe, co chyba oczywiste. Jak coś jest const to jest const i tyle.
Ok, czyli w każdego rodzaju konstruktora przez listę inicjalizacyjną - to już dla mnie jasne.
czyli jak chcę stworzyć nowy obiekt przypisując mu wartość(korzystając z operatora przypisania) to pomijam w tym wypadku zmienną przy której stoi const(w ciele operatora)?
Raczej powinieneś się zastanowić dlaczego chcesz pole const i operator przypisania jednocześnie. Jeśli chcesz skopiować tylko niestałe pola to raczej bym to zrobił w jakiejś metodzie o sensownej nazwie. Operator przypisania sugeruje, że kopiujesz wszystko.
Mam
private:
int a, b;
const int c;
dla nich przeładowanie operatora przypisania, takie polecenie - na zajęcia :)
Przypisz a i b.
Co do c to masz 3 wyjścia:
const_cast<>
</del>
Innej opcji nie ma?
Ale w konstruktorze 'c' mam w liście inicjalizacyjnej, więc jego wartość jest ustawiona, a operator przypisania jak się uruchomi to 'c' i tak będzie już ustawione dzięki konstruktorowi. Dobrze rozumiem?