Создание неограниченного количества элементов |
Здравствуйте, гость ( Вход | Регистрация )
Создание неограниченного количества элементов |
DEADHUNT |
13.8.2010, 19:27
Сообщение
#51
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
Синтаксис я тоже не понял что означает "= delete" и "= default" после прототипа функции? = delete/default применяется только к специальным членам класса(конструктор, конструктор копирования, ...), delete обозначает то что компилятор не должен генерировать default версию этого специального члена класса, а при попытке вызова выдавать ошибку компиляции(это равносильно объявиления данного члена закрытым и не реализовывать). default показывает компилятору что он должен создать default версию данного члена, например:
иначе бы компилятор не стал создавать конструктор по умолчанию. |
|
|
Алексей1153 |
13.8.2010, 20:26
Сообщение
#52
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
понятно
то есть мне нужно добавить
Сообщение отредактировал Алексей1153 - 13.8.2010, 20:29 |
|
|
DEADHUNT |
13.8.2010, 20:38
Сообщение
#53
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
то есть мне нужно добавить это же разрушающее копирование получается(если ещё посмотреть код operator=), т.е. что-то типа std::auto_ptr, а их нельзя в контейнерах использовать, надо что-то типа shared_ptr делать, то есть хранить количество ссылок на указатель, ... Сообщение отредактировал DEADHUNT - 13.8.2010, 20:44 |
|
|
Алексей1153 |
13.8.2010, 20:49
Сообщение
#54
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
DEADHUNT, так так, тут вот поподробнее. Почему разрушающее? Я копирую указатель в новую оболочку, а сам "указуемый" объект жив.
Это вот в операторе = у меня заменяемый объект отправляется в кучу, а принимаемый его заменяет Почему нельзя в контейнере использовать, ведь контейнер ничего неиспортит, вызывая конструкторы и операторы Я главную цель всей этой эпопеи не сказал (думал, и так понятно) - безопасное использование resize() контейнера + автоудаление "указуемых" объектов в кучу Сообщение отредактировал Алексей1153 - 13.8.2010, 20:47 |
|
|
DEADHUNT |
13.8.2010, 20:57
Сообщение
#55
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
получается так:
и ещё непонятно зачем operator= принимает константную ссылку, а внутре изменяет содержимое константного объекта, лучше было бы в параметре использовать не константную ссылку. Сообщение отредактировал DEADHUNT - 13.8.2010, 20:52 |
|
|
Алексей1153 |
13.8.2010, 21:07
Сообщение
#56
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Я не собирался отдельно объявлять переменные класса s_VectorPtr<T> , всем этим заведует сам вектор (структура s_VectorPtr, кстати, в проекте, откуда выдрано, описана как приватная внутри класса с вектором)
Теперь я понимаю твоё возмущение, а также , почему у меня всё работает, хотя, по стандарту, не должно Я реализовал и использовал частный случай |
|
|
Текстовая версия | Сейчас: 30.11.2024, 14:51 |