Zadaj pytanie
Subskrybuj kanał RSSnajnowszych pytań
class A{}; A a;
Co nalezy zrobic, by nie dalo sie wywolac konstruktora kopiowania? Tzn, zeby cos takiego bylo nielegalna operacja:
A b(a);
Odpowiedz na pytanie
0
2 lata, 3 miesiące temu autor: piotreks
3
Zadeklarować go jako prywatny lub chroniony, tzn.: class A { protected: A(const A& right) {} }; lub class A { private: A(const A& right) {} }; W praktyce ciało mógłbyś pominąć, pod warunkiem że sam wewnątrz tej klasy, ani w klasach pochodnych i zaprzyjaźnionych nie będziesz próbował kopiować instancji klasy A. Jeżeli chcesz zablokować wogóle kopiowanie obiektu, pamiętaj to samo zrobić z operatorem przypisania operator=
Zadeklarować go jako prywatny lub chroniony, tzn.:
class A { protected: A(const A& right) {} };
lub
class A { private: A(const A& right) {} };
W praktyce ciało mógłbyś pominąć, pod warunkiem że sam wewnątrz tej klasy, ani w klasach pochodnych i zaprzyjaźnionych nie będziesz próbował kopiować instancji klasy A.
Jeżeli chcesz zablokować wogóle kopiowanie obiektu, pamiętaj to samo zrobić z operatorem przypisania operator=
operator=
2 lata, 3 miesiące temu autor: michu
1
Nie jestem specem od C++, w C# można mieć prywatne konstruktory - w C++ nie?
Zaloguj się, aby dodać swoją odpowiedź
3112
powrót do góry
Copyright © 9fingers.pl Webdesign: TonikStudio.pl