информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыSpanning Tree Protocol: недокументированное применениеПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] А вот неправда твоя (iirc) 29.10.03 18:54  Число просмотров: 1290
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> Компилятор сам скажет, что тебе надо. То бишь при наличии
> хоть одного (любого) конструктора, конструкторы побитового
> копирования не создаются.
При наличии любого объявленного конструктора не создается конструктор по умолчанию. А чтобы не создался конструктор копирования, нужно специально его объявить, но не определить. То же самое относится и к оператору присваивания.
<programming>
[C++] как правильно делать std::vector::push_back? 29.10.03 08:07  
Автор: Nutteno Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Есть, например, класс CClass. Если я делаю так: "std::vector<CClass>clazzz;"
Нужно ли мне перегружать operator= для CClass, если захочу потом воспользоваться clazzz.push_back?
[C++] Если у тебя будет хоть один конструктор 29.10.03 11:07  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Есть, например, класс CClass. Если я делаю так:
> "std::vector<CClass>clazzz;"
> Нужно ли мне перегружать operator= для CClass, если захочу
> потом воспользоваться clazzz.push_back?
Компилятор сам скажет, что тебе надо. То бишь при наличии хоть одного (любого) конструктора, конструкторы побитового копирования не создаются. Насколько я понимаю, побитовое присвоение тоже не производится
[C++] А вот неправда твоя (iirc) 29.10.03 18:54  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> Компилятор сам скажет, что тебе надо. То бишь при наличии
> хоть одного (любого) конструктора, конструкторы побитового
> копирования не создаются.
При наличии любого объявленного конструктора не создается конструктор по умолчанию. А чтобы не создался конструктор копирования, нужно специально его объявить, но не определить. То же самое относится и к оператору присваивания.
[C++] Действительно моя 29.10.03 19:36  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> При наличии любого объявленного конструктора не создается
> конструктор по умолчанию. А чтобы не создался конструктор
> копирования, нужно специально его объявить, но не
> определить. То же самое относится и к оператору
> присваивания.
Нет мне оправдания - пойду штудировать страуструпа. :-)
[C++] как правильно делать std::vector::push_back? 29.10.03 10:26  
Автор: alien <Андрей> Статус: Member
<"чистая" ссылка>
> Есть, например, класс CClass. Если я делаю так:
> "std::vector<CClass>clazzz;"
> Нужно ли мне перегружать operator= для CClass, если захочу
> потом воспользоваться clazzz.push_back?
Думаю, что здесь необходима перегрузка конструктора копирования (если конечно есть необходимость в копировании данных, который этот класс размещает в динамической памяти).
Вот, кстати, код:
template <class _T1> inline void _Construct(_T1* __p) // здесь вызывается конструктор копирования { new (static_cast<void*>(__p)) _T1(); } ... ... void push_back(const _Tp& __x) { if (_M_finish != _M_end_of_storage) { _Construct(_M_finish, __x); ++_M_finish; } else _M_insert_aux(end(), __x); // здесь тоже используется _Construct }
Короче оператор присваивания в данном случае не используется, так что перегружать его нет необходимости.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach