Co oznacza kopiowanie obiektu ? Co to jest konstruktor kopii i operator przypisania kopii ? Kiedy sam muszę je zadeklarować? Jak mogę zapobiec kopiowaniu moich obiektów?
Czym jest ten idiom i kiedy należy go używać? Jakie problemy rozwiązuje? Czy idiom zmienia się, gdy używany jest C ++ 11? Chociaż w wielu miejscach wspomniano o tym, nie mieliśmy żadnego pojedynczego pytania i odpowiedzi „co to jest”, więc oto jest. Oto częściowa lista miejsc, w których wcześniej wspomniano: …
Mam klasę : class SymbolIndexer { protected: SymbolIndexer ( ) { } public: static inline SymbolIndexer & GetUniqueInstance ( ) { static SymbolIndexer uniqueinstance_ ; return uniqueinstance_ ; } }; Jak mam go zmodyfikować, aby wyłączyć kod, taki jak: SymbolIndexer symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( ); i zezwalaj tylko na kod …
Chcę odświeżyć pamięć w warunkach, w których kompilator zazwyczaj automatycznie generuje domyślny konstruktor, konstruktor kopiujący i operator przypisania. Przypominam sobie, że były pewne zasady, ale nie pamiętam, a także nie mogę znaleźć renomowanego źródła w Internecie. Czy ktoś może pomóc?
Ponieważ konstruktor kopiujący MyClass(const MyClass&); i przeciążenie operatora = MyClass& operator = (const MyClass&); mają prawie taki sam kod, ten sam parametr i różnią się tylko zwrotem, czy jest możliwe, aby obie miały wspólną funkcję?
Wiem, że kompilator C ++ tworzy konstruktor kopiujący dla klasy. W takim przypadku musimy napisać konstruktor kopiujący zdefiniowany przez użytkownika? Czy możesz podać kilka przykładów?
Czy można skopiować strukturę, której niektórzy członkowie nie są zainicjowani? Podejrzewam, że jest to zachowanie nieokreślone, ale jeśli tak, sprawia, że pozostawienie niezainicjowanych członków w strukturze (nawet jeśli ci członkowie nigdy nie są bezpośrednio wykorzystywani) jest dość niebezpieczne. Zastanawiam się więc, czy jest coś w standardzie, które to pozwala. Na …
W przeszłości mówiłem, aby bezpiecznie skopiować kolekcję i zrobić coś takiego: public static void doThing(List<String> strs) { List<String> newStrs = new ArrayList<>(strs); lub public static void doThing(NavigableSet<String> strs) { NavigableSet<String> newStrs = new TreeSet<>(strs); Ale czy te konstruktory „kopiujące”, podobne metody i strumienie tworzenia statycznego są naprawdę bezpieczne i gdzie …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.