Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 20:57   #1
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию Дополнение метода родительского объекта

Извиняюсь отношении заголовка, не об объекта, а класса. переводчик глючит

Сразу говорю, что не имею понятия не имею как это сделать, потому относительно изложения кода на форум не пишите.
А теперь сама проблема.
У меня появилась ситуация когда мне нужно дополнить метод предка возьмем скажем перегрузки оператора>. Наследуются кажется все перегруженные операторы кроме =. В предка идет сравнение по одному полю, а я бы хотел еще сделать чтобы отпрыск делал сравнения дополнительно еще по 2-м полям класса.
Суть вопроса вроде изложил нормально. Буду признателен за ответы
Anubys вне форума Ответить с цитированием
Старый 14.12.2011, 21:00   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Ну сделайте вашу функцию сравнения виртуальной, и переопределите ее в классе-наследнике.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 14.12.2011, 21:51   #3
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию

Переопределение это конечно хорошо, но не в том суть. Меня интересует как дополнить, ну если не оператор функцию то любой метод родительского класса в наследнике. Цель ООП не повторное переписывание кода, а повторное его использование ...
Anubys вне форума Ответить с цитированием
Старый 14.12.2011, 21:58   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Anubys

Меня интересует как дополнить, ну если не оператор функцию то любой метод родительского класса в наследнике

для такого "дополнения" метод должен быть виртуальным. В наследнике вызываешь старый метод в виде base::method(...);

ну или переходить на более другой язык программирования, например python, java, c#
Rififi вне форума Ответить с цитированием
Старый 14.12.2011, 22:03   #5
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию

Спасибо понял
Anubys вне форума Ответить с цитированием
Старый 14.12.2011, 22:10   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

для такого "дополнения" метод должен быть виртуальным.

Вообще-то не совсем так.
Метод не обязательно должен быть виртуальным. Но тогда появляются некоторые ограничения, хотя в простых случаях можно и так использовать...

struct Foo { void f(){} };
struct Bar : Foo { void f() { Foo::f(); } };

Bar b;
b.f();
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Вызов метода без создания объекта. Предотвращение изменения фокуса. Colder M Помощь студентам 3 03.05.2011 23:42
Объявление метода внутри объекта JAVASCRIPt Kasper1 JavaScript, Ajax 4 09.03.2011 09:50
Использование метода repaint() объекта класса JPanel Alexcomeback Общие вопросы по Java, Java SE, Kotlin 1 31.10.2010 13:12
Передача метода объекта. the_deer_one Общие вопросы C/C++ 8 09.09.2010 15:07
Присваивание объекту родительского класса объекта дочернего Викдон Общие вопросы Delphi 0 07.02.2009 15:27