Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Hellko
6 / 6 / 2
Регистрация: 17.11.2012
Сообщений: 65
#1

Перегрузка операторов для наследованных классов - C++

06.03.2013, 12:34. Просмотров 801. Ответов 3
Метки нет (Все метки)

Есть один класс, для него определена операция сложения.
Есть так же наследованный класс для него работает операция сложения определенная для класса родителя, но у наследованного класса есть дополнительные параметры, которые тоже должны изменятся.
Можно перегрузить операцию сложения и для наследованного класса, но это не оптимально, т.к. по сути операция сложения делает тоже самое что и для класса родителя и еще кое что.
Но не переписывать же все операторы по 2 раза для класса и наследованного класса.
Как поступить чтобы наиболее оптимально определить и для наследованного класса операцию сложения?
http://www.cyberforum.ru/cpp-beginners/thread78387.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2013, 12:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перегрузка операторов для наследованных классов (C++):

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры...

Шаблоны классов, перегрузка операторов
Задание:Реализовать шаблон классов Array. Перегрузить операторы присваивания =,...

Идентификация наследованных классов
есть небольшая иерархия классов типа: class Interface //абстрактный {...

Перегрузка операторов для класса
class A { private: size_t i; public: size_t i_get() { return...

Перегрузка операторов для контейнера
Доброго времени суток. Просматривая STL, в ветке вектора наткнулся на такую...

3
CheshireCat
Эксперт С++
2907 / 1256 / 114
Регистрация: 27.05.2008
Сообщений: 3,451
06.03.2013, 12:48 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Parent 
{
     ....
    Parent& operator+(const Parent& _other) { ... };
};
 
class Successor: public Parent
{
    ....
    Successor& operator+(const Successor& _other)
    {
        Parent::operator+(_other);  // вызываем operator+ суперкласса
        // тут уже сделаны нужные действия для суперкласса....
 
        // а тут теперь добавляем какие-то специфичные для наследника действия...
    }
}
1
Hellko
6 / 6 / 2
Регистрация: 17.11.2012
Сообщений: 65
06.03.2013, 12:51  [ТС] #3
Спасибо
т.е. если операторов скажем перегружено штук 10, то все равно придется их все перегружать и для дочернего класса хоть и таким облегченным способом.
0
CheshireCat
Эксперт С++
2907 / 1256 / 114
Регистрация: 27.05.2008
Сообщений: 3,451
06.03.2013, 13:23 #4
Да. Потому что родительский класс ничего не "знает" о тех членах, которые появились только в наследниках.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2013, 13:23
Привет! Вот еще темы с решениями:

Перегрузка операторов для list
Как перегрузить операторы вывода в поток и доступа по индексу для list?

Перегрузка операторов не для объектов
Можно ли так делать? Потому что в таком случае вызывается не мой оператор, а...

Перегрузка операторов для списков
Как сделать перегрузку оператора умножить (оператор возвращает адрес первого...

Перегрузка операторов для класса МАССИВ
Привет. Есть класс "вектор" ("массив"), нужно переопределить операторы =, +,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru