237 / 263 / 218
Регистрация: 14.11.2016
Сообщений: 988
|
|
1 | |
Что должен содержать класс по-умолчанию?19.07.2017, 10:52. Показов 1906. Ответов 16
Метки нет Все метки)
(
Если пишется класс, то обязательно должны быть реализованы следующие операции:
1) Конструктор по-умолчанию 2) Перегрузка оператора '=' 3) Конструктор копирования 4) Деструктор Как вы считаете? Является ли это "правилом хорошего тона"? И как должен по-умолчанию работать конструктор копирования, вызывать оператор '=' для двух объектов ( *this = other;) , при условии что оператор '=' уже перегружен?
0
|
|
19.07.2017, 10:52 | |
Ответы с готовыми решениями:
16
Создайте класс, в котором есть ostream& operator<<. Класс должен содержать очередь с приоритетом
Пользовательский класс Array должен содержать конструктор с параметрами
|
2098 / 1619 / 690
Регистрация: 27.07.2012
Сообщений: 4,853
|
|
19.07.2017, 10:56 | 2 |
Вовсе не обязательно. Очень часто то, что генерирует компилятор, именно то, что нужно от этих функций.
0
|
237 / 263 / 218
Регистрация: 14.11.2016
Сообщений: 988
|
|
19.07.2017, 11:09 [ТС] | 3 |
John Prick, да, это знаю.
Добавлено через 7 минут MrGlurk, zss, Croessmah, ildwine, как вы считаете?
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
19.07.2017, 11:38 | 4 |
anapshy, думаете красиво звать людей, которые не знают о вашей теме, получат уведомления и какую реакцию вы ожидаете? Не пойму откуда у вас позитивная репутация с таким отношениям к людям.
А по делу, нету обязательств у программистов делать перегрузку, если она не необходима
1
|
зомбяк
1580 / 1214 / 345
Регистрация: 14.05.2017
Сообщений: 3,936
|
|
19.07.2017, 12:00 | 5 |
rikimaru2013, вопрос был чуть в другом - можно ли использовать в конструкторе копирования оператор присваивания. Лично моё мнение - можно, но это будет менее производительно. В конструкторе копирования проверять
this == &other не требуется (т.к. это конструктор, его объект ранее не существовал, а значит не мог быть передан по ссылке), ну и для полей вызывать копирующий конструктор вместо оператора присваивания тоже будет рациональнее.Добавлено через 2 минуты Потому что иначе поля вначале инициализируются по-умолчанию, а только потом скопируются.
1
|
Неэпический
|
||||||
19.07.2017, 12:15 | 6 | |||||
Нет. Есть еще POD и другие приколюхи.
Добавлено через 49 секунд Глупости. В конструктор копирования может быть передан и сам конструирующийся объект.
0
|
Модератор
![]() 12789 / 10243 / 6152
Регистрация: 18.12.2011
Сообщений: 27,433
|
|
19.07.2017, 12:16 | 7 |
![]() Решение
Мое мнение о том, что должен содержать класс, я изложил создав образец:
Образцы (шаблоны) программ для типовых задач
1
|
зомбяк
1580 / 1214 / 345
Регистрация: 14.05.2017
Сообщений: 3,936
|
|||||||||||
19.07.2017, 12:21 | 8 | ||||||||||
Да? Не знал...
Вообще речь о разнице
0
|
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 15
|
|
19.07.2017, 12:24 | 9 |
3) Конструктор копирования
Разве его стоит писать если нету динамических полей?
0
|
Неэпический
|
|
19.07.2017, 12:25 | 10 |
Причем здесь это?
Вот цитаты: В конструктор копирования может быть передан тот же объект, который конструируется. Не проверив, получим невалидный объект. правда, делать так никто не будет. Я об этом уже писал на форуме с примером, можете поискать.
2
|
237 / 263 / 218
Регистрация: 14.11.2016
Сообщений: 988
|
|
19.07.2017, 12:25 [ТС] | 11 |
rikimaru2013, а что не так-то? Что по вашему плохого в том, что я хочу услышать совета от людей, которые уже не 2, и не 5 лет в данной сфере (не считая времени отведенного на изучение)?
0
|
Неэпический
|
|
19.07.2017, 12:36 | 12 |
1
|
237 / 263 / 218
Регистрация: 14.11.2016
Сообщений: 988
|
||||||
19.07.2017, 13:09 [ТС] | 13 | |||||
Croessmah, будет же верным следующий код? Только теперь тут выводится
operator= cctor . Логику почему так происходит - понимаю.Переменные объекта v остаются теми же, что и в вашем бы коде (т.е. строка пустая).
Уже привык сначала перегружать = , а потом использовать его(= ) в копирующем конструкторе.
0
|
зомбяк
1580 / 1214 / 345
Регистрация: 14.05.2017
Сообщений: 3,936
|
||||||
19.07.2017, 13:14 | 14 | |||||
anapshy, только тогда уже
![]()
0
|
237 / 263 / 218
Регистрация: 14.11.2016
Сообщений: 988
|
|
19.07.2017, 13:18 [ТС] | 15 |
TRam_, как я понимаю все способы верные, спасибо
![]()
0
|
rikimaru2013
|
19.07.2017, 13:57
#16
|
0
|
237 / 263 / 218
Регистрация: 14.11.2016
Сообщений: 988
|
|
19.07.2017, 14:02 [ТС] | 17 |
rikimaru2013,
![]()
0
|
19.07.2017, 14:02 | |
Помогаю со студенческими работами здесь
17
Создать класс City, который должен содержать информацию - площадь городов
Каскадирование - что будет содержать указанный класс #1241 - Операнд должен содержать 1 колонок Пароль должен содержать не только цифры, но и буквы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |