|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.07.2015, 17:41 | #11 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Например, так:
Код:
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
16.07.2015, 18:20 | #12 | |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
Цитата:
конструктор копий Код:
Код:
оператор Код:
Вы выделяете память под указатель при создании объекта, что бы избежать проблем при уничтожении объекта, выделяйте память и при копии
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Последний раз редактировалось Perchik71; 16.07.2015 в 18:26. |
|
17.07.2015, 10:45 | #13 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
В норме не стоит переписывать стандартные функции (копирование, перемещение, конструкторы) ведь не зря они предоставляются по умолчанию. Стоит правильно организовывать объект, например:
Код:
Если приходится писать деструктор, то удаляю конструкторы и операторы = (можно написать свои если нужно). P.S: на shared_ptr также можно посмотреть. В общем копать здесь http://en.cppreference.com/w/cpp/header/memory Последний раз редактировалось 220Volt; 17.07.2015 в 11:01. |
17.07.2015, 13:02 | #14 |
Форумчанин
Регистрация: 24.04.2012
Сообщений: 300
|
Да вы что?
Стандартный конструктор копирования копирует ПОБАЙТОВО, не вызывая конструкторов копирования vector'a и shared_ptr. Вот такой код приведет к интересному результату (да и к тому же семантика shared_ptr нарушается): class A { std::shared_ptr<int> x; public: void fill() { x.reset(new int(10)); } void new_val() { *x = 11; } void print() { printf("%d", *x); } }; int main() { A a; a.fill(); A b = a; a.new_val(); b.print(); return 0; }
Помог? Оставляем отзыв =)
|
17.07.2015, 13:20 | #15 | |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Цитата:
Код:
copy constr По вашему примеру: у меня печатает 11, что неправильно? |
|
17.07.2015, 13:43 | #16 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
17.07.2015, 14:03 | #17 |
Форумчанин
Регистрация: 24.04.2012
Сообщений: 300
|
Хорошо, с shared_ptr неудачный пример, замените на unique_ptr с тем же кодом.
Помог? Оставляем отзыв =)
|
17.07.2015, 14:25 | #18 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Как же можно применить код к unique_ptr, данная логика там не применима. Можно сделать move(a), но не вижу смысла (что это доказывает?).
|
17.07.2015, 17:17 | #19 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
18.07.2015, 03:35 | #20 | |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
Цитата:
P.S. отказ от указателей? хммм, не помню язык, но такую "фичу" пытались сделать... (кто помнит поправите), привело к тому, что Вы ограничены по потреблению памяти, к тому же, нет возможности динамически влиять на размеры.. списки и массивы итд, можете забыть.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Последний раз редактировалось Perchik71; 18.07.2015 в 03:41. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа со стандартным графическим модулем | dbrf | Помощь студентам | 1 | 18.01.2015 21:56 |
Вопрос по стандартным контейнерам | monnzz | Общие вопросы C/C++ | 3 | 31.03.2013 02:55 |
Графика по стандартным алгоритмам | Kovy | Помощь студентам | 2 | 23.01.2011 13:08 |
Вопрос по стандартным фукциям. | Klim Bassenger | Microsoft Office Excel | 4 | 17.08.2009 20:07 |
Работа со стандартным help'ом | Гришас | Помощь студентам | 4 | 21.03.2007 16:07 |