![]() |
|
Модераторы: Daevaorn |
![]()
|
|
||
|
|
| Neitron |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
Часто у многих бывает выбор, как лучше сделать, использовать перегрузку функций или заюзать поля типа.
На мой взгляд, перегрузка является дорогим решением проблемы, а вот поля типа Страуструп например не рекомендует использовать... Ну к примеру...
Намного короче, чем
А если придется, менять интрефейс и добавлять новый тип? Это же перекомпиляция ВСЕХ файлов испольщующие класс... Это сообщение отредактировал(а) Neitron - 22.12.2005, 15:18 -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Проголосовал за
Так так...в дальнейшем если добавятся новые классы для каждого из них надо будет перегружать функцию..а в этом случае делаешь нужную тебе функцию виртуальной а класс Object абстрактным...все значительно проще... |
|||
|
||||
| Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
а не легче использовать шаблон ?
и далее юзать
Это сообщение отредактировал(а) Romikgy - 22.12.2005, 15:36 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||
|
|||||
| azesmcar |
|
||||||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Шаблон в данном случае небезопасен...
А если я напишу
Откуда гарантия что функции передали правильный аргумент, т.е. аргумент который можно ей передать? Добавлено @ 15:42 Oп, извиняюсь, не заметил кое чего..
Вообще то я имел ввиду так..
Добавлено @ 15:44 В таком случае я за перегрузку...беру свое голосование назад |
||||||||||||
|
|||||||||||||
| Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
в принципе тоже относится и к
также неоднозначно, я так понял что список всех типов известен -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||
|
|||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Этот код в случае с перегрузкой и наследованием компилироваться не будет...а template будет.. |
||||
|
|||||
| Neitron |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
Я не уверен что в будущем я не добавлю новых типов.
-------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Вопрос только в том что в случае с наследованием при добавлении новых классов ничего заново перегружать не придется...
|
|||
|
||||
| Neitron |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
Ага... Только проблема в том, что для этого придется изменять все мне нужные VCL классы, и добавлять их на форму динамический, а не простым кликом мыши......................
-------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Вот поэтому лучше будет если функция будет принимать в качестве аргумент указатель на базовый класс. Кстати добавь этот ответ в голосование... Добавлено @ 16:03
А что в случае с void * тоже самое делать не придется? |
||||
|
|||||
| Neitron |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
azesmcar
Я не могу менять голосование. А смысл от базового класса?? тогда все мои типы, придется делать производными от TObject, но смысла в этом совсем нету. В случае с void, динамический я буду создовать ТОЛЬКО свои классы. TObject все равно не имеет нужных для меня методов GetValue и GetImeName; Добавлено @ 16:10 azesmcar Я понел о чем ты говоришь... Но тогда мне просто не удасться пихать компоненты визуально на форму, или придется из-за фигни писать свои компоненты. Это сообщение отредактировал(а) Neitron - 22.12.2005, 16:11 -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
а, ну так и скажи что твои классы не унаследованы от TObject
Ну в таком случае в самом деле лучше template Если это внутренная функция (не интерфейсная) и ее используешь только ты то в принципе и void * сойдет...просто в случае с template Size передавать не понадобится...вычислишь с помощью sizeof |
|||
|
||||
| Neitron |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
azesmcar
Я думал насчет template, А Type = это не размер. Как я тогда определю какой объект передан??? По sizeof? Не гарантия... У разных объектов, нужные мне методы по разному называются... Сейчас вот так...
Это сообщение отредактировал(а) Neitron - 22.12.2005, 16:19 -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Ну тогда хотя бы так...
По моему красивее а? |
|||
|
||||
| Neitron |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
azesmcar
Не=))) Тогда компилятор на каждый объект создаст одинаковые ф-ции... Ну нафига это нужно? Никакой экономии памяти. Вообщем все приимущества С++ нахер. Используйте поля типа господа... Конечно еслиб я сам делал все классы, я бы сделал общие методы... Но увы Это сообщение отредактировал(а) Neitron - 22.12.2005, 16:35 -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |