|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.12.2013, 14:36 | #11 | |||
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
Цитата:
Цитата:
Цитата:
Можете объяснить, как и на что здесь повлиял модификатор const? |
|||
04.12.2013, 15:19 | #12 | ||
Форумчанин
Регистрация: 13.11.2013
Сообщений: 149
|
Вот такой конструктор не проходит.
Код:
Цитата:
Цитата:
Код:
p.s. Чуть оффтопа. Попробуйте Eclipse + CDT + MinGW. После этого на VS мне не захотелось возвращаться. Последний раз редактировалось nikmoon; 04.12.2013 в 15:26. |
||
04.12.2013, 16:46 | #13 | ||||
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
Цитата:
Вот это тоже мне не понятно, что это за фигня - & в объявлении? И чем тогда отличаются объявления: MyClass func( MyClass ); MyClass & func( MyClass ); MyClass func( MyClass &); MyClass &func( MyClass &); M? Цитата:
Цитата:
VS считает, что const MyClass & и просто MyClass & - это разные типы, поэтому дополнительно должен быть явно определен и конструктор от константы: Код:
Цитата:
Хотя да, под VS я пиратствую Как нибудь поиграюсь и с Эклипсом |
||||
04.12.2013, 16:54 | #14 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Цитата:
Разница между MyClass и MyClass& более-менее такая же, как между MyClass и MyClass* |
|
04.12.2013, 18:34 | #15 | ||
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
Цитата:
При этом вызывается всегда только один конструктор. Сonst конструктор копирования вызывается лишь при отсутствии не-const'ого. Цитата:
Я всегда думал, что "." - это признак объекта, существующего только в пределах данной функции, а "->" - подсказывает, что этот объект - где-то там, неизвестно где и менять его вредно. |
||
04.12.2013, 20:03 | #16 |
Форумчанин
Регистрация: 13.11.2013
Сообщений: 149
|
Ссылка MyClass& безопаснее и удобнее, чем указатель MyClass*.
Простой пример: тебе нужно передать в функцию объект, функция может менять объект, значит есть два варианта это сделать: передать по ссылке и передать по указателю. В случае передачи по указателю, внутри функции очень желательно проверять его на NULL. Если передавать по ссылке такая проверка не нужна. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Конструктор класса не хочет принимать в качестве параметра адрес объекта другого класса | Jugger | Помощь студентам | 3 | 05.01.2012 04:10 |
[c++] Создание класса. Используя конструктор. | Actimel | Помощь студентам | 2 | 03.01.2012 11:54 |
передача функции в конструктор класса | Kukurudza | Общие вопросы C/C++ | 6 | 04.12.2011 08:31 |
Конструктор шаблонного класса | Hemul | Общие вопросы C/C++ | 1 | 01.07.2011 20:21 |
Конструктор класса | XPAiN | Общие вопросы Delphi | 2 | 24.01.2010 15:00 |