Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переопр. равно если поля -- классы 
V
    Опции темы
Dims
Дата 7.12.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



Нужно ли определять operator= и конструктор по ссылке для класса или структуры, у которого все поля являются либо встроенными типами, либо классами, у которых определён operator= и конструктор по ссылке?

Нужно ли переопределять операторы, если члены имеют типа map, set и т.д. из STL? То есть, правильно ли в таком случае будет работать операторы по умолчанию?
PM MAIL   Вверх
Daevaorn
Дата 7.12.2007, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Dims @  7.12.2007,  10:23 Найти цитируемый пост)
конструктор по ссылке

это что за зверь такой?
PM MAIL WWW   Вверх
Dims
Дата 7.12.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



Цитата(Daevaorn @  7.12.2007,  09:28 Найти цитируемый пост)
это что за зверь такой? 

Что, уже отменили?

Это такой вот конструктор

Код

class MyClass {
   MyClass(const MyClass& proto);
};


который создаёт объект типа MyClass на основании другого имеющегося объекта этого типа. Как правило, этот конструктор корректно копирует содержимое старого экземпляра в новый.

Он вызывается в некоторых специальных случаях. Точно не помню, каких, типа при передаче параметра в функцию. 

Как я понимаю, этот конструктор, а также оператор присваивания, надо переопределять, если твой объект должен быть "полноценным", то есть, чтобы его можно было не задумываясь использовать наравне с другими объектами во всех возможных ситуациях.
PM MAIL   Вверх
Daevaorn
Дата 7.12.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Dims @  7.12.2007,  11:26 Найти цитируемый пост)
Что, уже отменили?

Может в ваших степях такой есть, но "конструктора по ссылке"" в С++ никогда не было. То что ты описал - это конструктор копирования. Выражайся точнее.
Цитата(Dims @  7.12.2007,  10:23 Найти цитируемый пост)
Нужно ли

Нет
Цитата(Dims @  7.12.2007,  10:23 Найти цитируемый пост)
Нужно ли переопределять операторы, если члены имеют типа map, set и т.д. из STL?

Нет, если они в свою очередь хранят "правильные" объекты.
Цитата(Dims @  7.12.2007,  10:23 Найти цитируемый пост)
То есть, правильно ли в таком случае будет работать операторы по умолчанию? 

да
PM MAIL WWW   Вверх
Dims
Дата 7.12.2007, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



То есть, по умолчанию, для структуры, копирующий конструктор выполняет не bitwise copy, а вызывает для членов, если есть, тоже копирующий конструктор?
PM MAIL   Вверх
Lazin
Дата 7.12.2007, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



да
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.