![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Пример:
Вообщем нужен инспектор, а не мутатор. А вот как его объявить? 1 или 2? Тело этого метода тривиально:
Используется, например, в методах класса Point3D:
Работает и так и так. А есть ли разница? P.S. Сильно не пинать. Я только начинаю... ![]() -------------------- |
||||||
|
|||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
2й вариант предпочтительнее, потому что не будет создавать дополнительных копий,
например при передачи в такую функцию void fn (const Point3D& ) Это сообщение отредактировал(а) mes - 30.3.2009, 14:50 |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
mes, спасибо! А конструкции типа Class method() const; нужны, например, для того чтобы возвращать объект, созданный внутри метода? -------------------- |
|||
|
||||
Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
const нужен для того, чтобы сказать компилятору, что твой метод не будет менять свойства экземпляра класса.
|
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не только.. Тогда когда нужно отдать именно копию, а не ссылку на объект. Это нужно почувствовать, объяснить сложно ![]() Добавлено через 57 секунд
Acer, kemiisto не про этот const спрашивает ![]() |
||||
|
|||||
Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
Такая конструкция вернет тебе копию обьекта Class |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Да... Чуточку прояснилось... -------------------- |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
это что за индокод? ![]()
|
|||
|
||||
baldina |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
Действительно бывают случаи,
- когда объект временный (то, что упомянул kemiisto) - когда думаешь про семантику, а не оптимизацию - когда нужно отдать не константный объект, например имеющий нестандартную семантику присваивания а вот представим ситуацию, когда значение Point используется в цикле:
есть разница? а теперь представим, что s. centre_ может измениться. в этом случае один из вариантов будет работать неправильно. какой именно - зависит от задачи |
||||||||
|
|||||||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
![]() baldina, я даже что то понял, из того, что Вы сказали. ![]() -------------------- |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не слишком ли грубо за лишнeе использование "if" ? |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
нет
это как раз пример индокода, одного из ярчайших его проявлений Это сообщение отредактировал(а) vinter - 31.3.2009, 07:50 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
![]() а меня, признаться, больше задел сам метод bool Point3D::isInside(const Sphere3D& sphere) const получается, что класс Point3D должен знать обо всех типах, внутри которых может находиться точка. логичнее bool isInside(const Point3D&, const Sphere3D& sphere) (эх, мультиметоды сюда бы) да и реализация... pow... sqrt... гм... навела на размышления ;-) почему не
|
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Ещё раз спасибо всем за помощь.
Но я попрошу воздержаться от комментариев не по теме. Во-первых, это только наброски. Во-вторых, это субъективная оценка. В-третьих, я не просил оценивать объектную модель.
baldina, есть ведь ещё базовый класс Primitive3D... Это же только набросок. Какой смысл обсуждать объектную иерархию без полноты картины. Я эту картину ещё и сам то не видел, а Вы... А есть какая то принципиальная разница? ![]() Это сообщение отредактировал(а) kemiisto - 31.3.2009, 10:14 -------------------- |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
очень даже объективная и правильная оценка ![]() точка не должна знать о всех фигурах в которые она может попадать или нет, это объекты геом. фигур должны уметь определять, принадлежит им точка или нет, либо можно сделать это функцией ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |