Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2015, 05:54   #21
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Цитата:
Сообщение от Perchik71 Посмотреть сообщение
Если класс содержит указатели внутри себя, у вас будут большие проблемы, если Вы не опишите конструктор копий, ровно так же как и деструктор. Проблемы очевидные... Вы не контролируете память, и не можете предсказать поведении объекта, вообще это будет "баг", который аргументируется как Ваша неопытность.

P.S. отказ от указателей? хммм, не помню язык, но такую "фичу" пытались сделать... (кто помнит поправите), привело к тому, что Вы ограничены по потреблению памяти, к тому же, нет возможности динамически влиять на размеры.. списки и массивы итд, можете забыть.
У меня чувство, что Вы не на мой пост отвечали.
2. От указателей ни в коем случаи не отказываюсь.
1. Выше я показал как избежать самопальные конструкторы/деструкторы/operator=, это общепринятая практика. В C++ существует стандартная модель копирования/перемещения (конструкторы/деструкторы/операторы по умолчанию о чём-то говорят). Для памяти существуют удобные обвёртки вокруг указателей. Написать обвертку для другого/своего ресурса - плёвое дело:
Код:
class Me_res
{
public:
    Me_res(const Me_res &)                      {...}
    Me_res(Me_res &&)                              {...}
    Me_res &operator=(const Me_res &)   {...}
    Me_res &operator=(Me_res &&)          {...}
};
Обвёртка без проблем впишется в существующую модель. Хотите изобретать свой велосипед? Хозяин - барин.
220Volt вне форума Ответить с цитированием
Старый 18.07.2015, 15:42   #22
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Вы скорее не поняли, если в классе переменные "обычные", ничего страшного, что вы ничего не описали, в противном случаи не описав Вы однажды столкнётесь с кучей ошибок типо 0xc0000005, или того хуже 0xc0000374. Для "класса-обёртки" не имеющих переменных указателей, можно даже деструктор не описывать.
Но в целом (вспоминая Янга), который не советует надеется на самопальный конструктор копий, я послушаюсь его совету, написать 2 функции в пару строчек, как бы пальчики не источаться.
И не нужно писать 4, как Вы пишете, ибо Вы не используете excplicit
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 18.07.2015 в 15:48.
Perchik71 вне форума Ответить с цитированием
Старый 22.07.2015, 18:29   #23
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А почему должен? Он по стандарту простейший побайтовый копировальщик.
почленный.
_Bers вне форума Ответить с цитированием
Старый 22.07.2015, 18:32   #24
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Helloween Посмотреть сообщение
Да вы что?

Стандартный конструктор копирования копирует ПОБАЙТОВО, не вызывая конструкторов копирования vector'a и shared_ptr.
вы ошибаетесь.

копированние почленное.
со всеми сопутствующими вызовами конструкторов для членов класса.
_Bers вне форума Ответить с цитированием
Старый 22.07.2015, 18:34   #25
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Perchik71 Посмотреть сообщение
Если класс содержит указатели внутри себя, у вас будут большие проблемы
не будет у него никаких проблем, если он задействует смарты.
_Bers вне форума Ответить с цитированием
Старый 26.07.2015, 14:57   #26
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

достаточно одного return
RAFA91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со стандартным графическим модулем 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