operator przypisania, konstruktor kopiujący dla const

0

Witam,

Jeśli zmienna w klasie jest const, to w jaki sposób przypisać ją w konstruktorze kopiującym oraz w operatorze przypisania?

2

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.

0

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)?

2

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.

0

Mam

private: 
int a, b;
const int c;

dla nich przeładowanie operatora przypisania, takie polecenie - na zajęcia :)

0

Przypisz a i b.

Co do c to masz 3 wyjścia:

  • pominąć w przypisaniu
  • zgłosić wyjątek jeśli różne
    - użyć
const_cast<>
</del>

http://www.possibility.com/Cpp/const.html

0

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?

1 użytkowników online, w tym zalogowanych: 0, gości: 1