Запитання з тегом «copy-constructor»


5
Що таке ідіома копіювання та заміни?
Що це за ідіома і коли її слід використовувати? Які проблеми вона вирішує? Чи змінюється ідіома, коли використовується С ++ 11? Хоча про це згадували в багатьох місцях, у нас не було жодного особливого запитання та відповіді "що це", тож ось воно. Ось частковий перелік місць, де раніше згадувалося: Ваші …

3
Вимкнути конструктор копій
У мене клас: class SymbolIndexer { protected: SymbolIndexer ( ) { } public: static inline SymbolIndexer & GetUniqueInstance ( ) { static SymbolIndexer uniqueinstance_ ; return uniqueinstance_ ; } }; Як я можу змінити його, щоб відключити код, наприклад: SymbolIndexer symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( ); і дозволяти лише такий код, …

3
Умови автоматичного генерування замовчувача / копіювання / переміщення ctor та оператора присвоєння копії / переміщення?
Я хочу оновити свою пам’ять про умови, за яких компілятор, як правило, автоматично генерує конструктор за замовчуванням, конструктор копій та оператор призначення. Я пам’ятаю, були деякі правила, але я не пам’ятаю і також не можу знайти авторитетний ресурс в Інтернеті. Хтось може допомогти?

3
Конструктор копіювання та = перевантаження оператора в C ++: чи можлива загальна функція?
Так як конструктор копій MyClass(const MyClass&); та перевантаження оператора = MyClass& operator = (const MyClass&); мають майже однаковий код, той самий параметр і різняться лише при поверненні, чи можна мати спільну функцію для обох?


4
Копіювання конструкцій з неініціалізованими членами
Чи дійсно копіювати структуру, частина членів якої не ініціалізована? Я підозрюю, що це не визначена поведінка, але якщо так, то це робить залишати будь-яких неініціалізованих членів структури (навіть якщо ці члени ніколи не використовуються безпосередньо) досить небезпечно. Тож мені цікаво, чи є щось у стандарті, що це дозволяє. Наприклад, чи …

2
Як я можу безпечно копіювати колекції?
Раніше я казав, що безпечно копіювати колекцію, роблячи щось на кшталт: public static void doThing(List<String> strs) { List<String> newStrs = new ArrayList<>(strs); або public static void doThing(NavigableSet<String> strs) { NavigableSet<String> newStrs = new TreeSet<>(strs); Але чи справді ці "копіюючі" конструктори, подібні статичні методи створення та потоки, справді безпечні та де …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.