Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вопрос по наследованию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проверьте задачу правильно решена ли http://www.cyberforum.ru/cpp-beginners/thread380545.html
Вопрос Определить минимальный и максимальный элементы, вычислить их разность. Задача моя #include <stdafx.h> #include <iostream> #include <math.h> int main () { setlocale(0,"Rus"); int...
C++ Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних... Здравствуйте, форумчане! У меня вот такая вот задачка: Задан двумерный массив. Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух... http://www.cyberforum.ru/cpp-beginners/thread380518.html
C++ предлагаю людям класс "каждому потоку- своё окно" для тестирования многопоточных приложений.
Друзья! То есть если вы разрабатывает многопоточные приложения и закалебались смотреть, что тот или иной поток выводит, то этот класс для вас. Использовать его просто. Подключаете хидер и пишете:...
C++ Центр графа
Дана матрица смежности. Найти максимальное расстояние в графе. Пол дня уже мучаюсь, искал в гугле, сам пытался, но ничего не получается... просто тупик... Код вылаживать не буду, так как он не...
C++ задача со строками http://www.cyberforum.ru/cpp-beginners/thread380453.html
пожалуйста, помогите. Нужно написать программу , которая определит длину введенной строки L, и, если L>10, то удаляются все цифры. я так понял, что в строке должны быть и цифры и буквы
C++ Перехват запросов Здравствуйте Форумчане, у меня возникла проблема, я хочу сделать что-то вроде веб-логгера который будет перехватывать запросы и т.д. Не подскажите ли Вы мне как это можно реализовать. Заранее спасибо. подробнее

Показать сообщение отдельно
Bers
Заблокирован
10.11.2011, 19:23
Цитата Сообщение от LosAngeles Посмотреть сообщение
Не надо сочинять небылицы. Выражение внутри этого ассерта всегда равно Тру, внезависимости от того равны смежные стороны, или не равны. В выражении фигурирует только высота прямоугольника на момент начала работы функции и высота по завершению работы функции, ширины вобще там нет, она ни с чем не сравнивается. Равна она высоте или нет - вобще пофигу! Этот ассерт не запрещает иметь прямоугольнику однаковые прилегающие стороны как ты выразился... Смысл этого ассерта в том чтобы показать, что в прямоугольнике одна сторона может изменяться независимо от другой и при открытом наследовании данное свойство передастся и квадрату, что недопустимо!

А теперь смотрим код:

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
void makeBigger(rectange& r)
{
int old = r.height();    //пофиксили высоту 
          //пока ещё валидного прямоугольника
 
r.setWidth( r.width()+10);  //единственный метод, 
                       //который может привести данные 
                                //в "не_валидное состояние"
 
//для прямоугольника метод изменит ширину.
//для квадрата изменит и ширину, и высоту.
 
assert( r.height() == old ); //что здесь проверяется?
 
//По мнению данной функции-манипулятора
//Если у прямоугольника высота изменилась в результате 
//работы методы setWidth() 
//то считать, что была выполнена недопустимая операция
//И поднять тревогу
 
//Какое утверждение заложено в ассерт?
//"при изменении ширины прямоугольника,
//Его высота должна остаться прежней"
 
}
Вопросы:

1. Почему Манипулятор принимает на входе ПРЯМОУГОЛЬНИК, но при этом запрещает быть ему квадратом? Квадрат, это что? Не прямоугольник что ли?

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

3. Если вы на вход подадите объект "квадрат". Он у вас отработает. Абсолютно правильно. Так, как от него и ожидается. Но при этом все равно сработает ассерт. Так вот, почему ассерт заламывает абсолютно работоспособный процесс программы?
Ну то есть, никакого сбоя нет в системе, а ассерт все равно всю программу аварийно тормознул.


То есть этот сферический конь в вакууме - хорошая иллюстрация ущербной архитектуры.
Хороший пример того, как делать не надо.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru