![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
![]()
Например, так:
Код:
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
![]() |
![]() |
![]() |
#12 | |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
![]() Цитата:
конструктор копий Код:
Код:
оператор Код:
Вы выделяете память под указатель при создании объекта, что бы избежать проблем при уничтожении объекта, выделяйте память и при копии
Если помог, тут весы есть
![]() Последний раз редактировалось Perchik71; 16.07.2015 в 18:26. |
|
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
![]()
В норме не стоит переписывать стандартные функции (копирование, перемещение, конструкторы) ведь не зря они предоставляются по умолчанию. Стоит правильно организовывать объект, например:
Код:
Если приходится писать деструктор, то удаляю конструкторы и операторы = (можно написать свои если нужно). P.S: на shared_ptr также можно посмотреть. В общем копать здесь http://en.cppreference.com/w/cpp/header/memory Последний раз редактировалось 220Volt; 17.07.2015 в 11:01. |
![]() |
![]() |
![]() |
#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; }
Помог? Оставляем отзыв =)
|
![]() |
![]() |
![]() |
#15 | |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
![]() Цитата:
Код:
copy constr По вашему примеру: у меня печатает 11, что неправильно? |
|
![]() |
![]() |
![]() |
#16 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
#17 |
Форумчанин
Регистрация: 24.04.2012
Сообщений: 300
|
![]()
Хорошо, с shared_ptr неудачный пример, замените на unique_ptr с тем же кодом.
Помог? Оставляем отзыв =)
|
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
![]()
Как же можно применить код к unique_ptr, данная логика там не применима. Можно сделать move(a), но не вижу смысла (что это доказывает?).
|
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]() |
![]() |
![]() |
![]() |
#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 |