Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 3
25.04.2012, 23:06

Множественное наследование: прямоугольник, квадрат, ромб, параллелограмм

25.04.2012, 23:06. Просмотров 5589. Ответов 47
Метки (Все метки)

Ответ

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Запросто: Ромб обладает всеми свойствами параллелограмма
Давайте возьмем аналогичный пример, но попроще. Иерархия прямоугольник <- квадрат. Во-первых, самое очевидное: зачем хранить в объекте квадрата две размерности? Во-вторых, всё это может стать причиной неочевидного поведения, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <cassert>
 
 
struct rectangle {
    rectangle(int width_, int height_) : width(width_), height(height_) {}
 
    int width;
    int height;
};
 
 
struct square : rectangle {
    square(int width) : rectangle(width, width) {}
};
 
 
void change_width(rectangle & rect, int width) {
    rect.width = width;
}
 
 
int main() {
    square sq(4);
    assert(sq.width == sq.height);
    
    change_width(sq, 5);
    assert(sq.width == sq.height);    // fail
}
Возможность изменить ширину прямоугольника, не меняя высоту - вполне логичное свойство, в отличии от квадрата. Наследуя же квадрат от прямоугольника первый наследует так же и поведение второго, в том числе и это свойство. Может быть с точки зрения геометрии квадрат и частный случай прямоугольника, но это ещё ничего не значит.
P.S.: надеюсь я ясно излагаю.

Вернуться к обсуждению:
Множественное наследование: прямоугольник, квадрат, ромб, параллелограмм
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2012, 23:06

Множественное наследование
Имеется множественное наследование в виде треугольника. Если в обоих базовых...

Множественное наследование
По этой схеме нужно сделать множественное наследование. Вот код:#include...

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

0
Другие темы раздела
C++ Освоение создания параллельных программ и функций обмена данными между процессами http://www.cyberforum.ru/cpp-beginners/thread558484.html
Помогите пожалуйста написать программу...Буду очень признателен В каждом подчиненном процессе дано целое число, причем только для одного процесса это число отлично от нуля. Переслать ненулевое...
C++ перегрузить оператор ++ Всем привет!!!Тут такое дело, когда запускаю программу она запускается, а когда дело доходит до перегрузки она выдает ошибку((: То есть закрывает ее. -- Хотел спросить как это исправить? Вот код... http://www.cyberforum.ru/cpp-beginners/thread558481.html
C++ Элементы матрицы, стоящие на пересечении нечетных строк и нечетных столбцов заменить переменной P
элементы матрицы Q,стоящие на пересечении нечетных строк и нечетных столбцов заменить переменной P.ПОМОГИТЕ ПОЖАЛУЙСТА ЧЕМ СМОЖИТЕ!!!БУДУ ОЧЕНЬ ПРИЗНАТЕЛЬНА
Подсветить символ цветом (положение курсора) C++
Как сделать чтобы 1 символ был подсвечен? т.е. на экране есть массив 000 001 000 нужно чтобы '1' как то выделялся Хелп))
C++ программу подсчета числа четных цифр http://www.cyberforum.ru/cpp-beginners/thread558450.html
Задача такая: Напишите программу подсчета числа четных цифр, используемых в записи N-значного числа M. на С++ извините что тороплю, но мне срочно надо, плз
C++ Прототип функции Здравствуйте) Написать программу упорядочивания элементов массивов А(50), В(50), С(50) по возрастанию, используя прототип функции. p.s.- если вас не затруднит напишите пожалуйста коментарий к... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru