информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаГде водятся OGRыSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] Если у тебя будет хоть один конструктор 29.10.03 11:07  Число просмотров: 1384
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Есть, например, класс CClass. Если я делаю так:
> "std::vector<CClass>clazzz;"
> Нужно ли мне перегружать operator= для CClass, если захочу
> потом воспользоваться clazzz.push_back?
Компилятор сам скажет, что тебе надо. То бишь при наличии хоть одного (любого) конструктора, конструкторы побитового копирования не создаются. Насколько я понимаю, побитовое присвоение тоже не производится
<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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach