powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / логическое отрицание - использование в паре примеров
7 сообщений из 7, страница 1 из 1
логическое отрицание - использование в паре примеров
    #38190509
Violet-n-red
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не понятно по какой причине оба условия в двух следующих фрагментах кода имеют одинаково истинный результат:

1)
Код: plaintext
1.
2.
3.
4.
5.
6.
base *bp, B_ob;
derived *dp, D_ob;

bp=&D_ob;
dp=dynamic_cast<derived*>(bp)
if(!dp) cout <<"type conversion successful";


2)
Код: plaintext
1.
2.
3.
bp=&B_ob;
dp=dynamic_cast<derived*>(bp)
if(!dp) cout <<"type conversion unsuccessful";



взято из "Самоучителя" Шилдта, с.369
...
Рейтинг: 0 / 0
логическое отрицание - использование в паре примеров
    #38190584
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что тебя смущает? Запутался в base и derived? Ну подставь вместо них "дерево" и "стол из дерева".
Тогда в первом примере у тебя будет: "нечто деревянное" это "вот этот стол из дерева". Является ли "столом из дерева" "нечто деревянное"?
А во втором: "нечто деревянное" это "вот эта деревяшка". Является ли "столом из дерева" "нечто деревянное"?
Простейший ООП.
...
Рейтинг: 0 / 0
логическое отрицание - использование в паре примеров
    #38190646
Violet-n-red
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне понятно ,что базовый указатель на производный класс можно преобразовать в производный, а базовый указатель на базовый класс в производный нельзя.

до меня вот что не доходит:
в первом примере всё удачно преобразуется и в случае выполнения условия "!dp"(что ,как я понимаю, означает, что операция НЕ выполнена) выводится сообщение об успешности операции; во втором же тоже самое условие используется для проверки ошибочности операции. это в книге ошибка или я что-то совсем не так понимаю? может, в первом примере условие должно быть без логического отрицания?

встречал несколько синтаксических ошибок в кодах, думаю, что и тут тоже ошибка. только хочу проверить это, ибо больше не у кого спрашивать.
...
Рейтинг: 0 / 0
логическое отрицание - использование в паре примеров
    #38190683
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь никаких ошибок нет.
dynamic_cast возвращает не нулевой указатель (в первом примере) если объект базового типа на самом деле является указанным производным типом. А если нет, то dynamic_cast возвращает ноль.
Запись !p означает взять значение p и если оно ноль - сделать не ноль. Если не ноль - сделать ноль.
if(cond) проверка: если cond не ноль - выполнить список команд для "правда", если ноль - выполнить список команд для "ложь".
Все очень просто на самом деле.
...
Рейтинг: 0 / 0
логическое отрицание - использование в паре примеров
    #38190710
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,
Его смущает разный коментарий к одинаковым условиям:
Код: plaintext
1.
2.
if(!dp) cout <<"type conversion successful";
if(!dp) cout <<"type conversion unsuccessful";



Правильно смущает: в обоих случаях должно быть слово unsuccessful.
...
Рейтинг: 0 / 0
логическое отрицание - использование в паре примеров
    #38190716
Violet-n-red
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Moskovsky,

да, вот это то, что я хотел уточнить. благодарствую.
...
Рейтинг: 0 / 0
логическое отрицание - использование в паре примеров
    #38190761
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyWhite Owl,
Его смущает разный коментарий к одинаковым условиям:
Код: plaintext
1.
2.
if(!dp) cout <<"type conversion successful";
if(!dp) cout <<"type conversion unsuccessful";



Правильно смущает: в обоих случаях должно быть слово unsuccessful.ээээ.... Ну это... эээ.... Короче у нас разное понятие успешности :)
Я смотрю по сути - удалось сделать приведение или не удалось. А вы смотрите формально - прошел dynamic_cast или не прошел.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / логическое отрицание - использование в паре примеров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]