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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.97
electromind
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 55
#1

Восходящее и нисходящее преобразование (Upcasting and Downcasting) - C++

18.09.2012, 15:10. Просмотров 4895. Ответов 3
Метки нет (Все метки)

Посоветуйте литературу по данному вопросу в разрезе С++
ну или простыми словами что это, для чего нужно
заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2012, 15:10     Восходящее и нисходящее преобразование (Upcasting and Downcasting)
Посмотрите здесь:

Неявное восходящее преобразование при защищенном/закрытом наследовании - C++
Здравствуйте. Читаю книгу Стивена Прата по C++. Попался непонятный момент: в одной таблице (в таблице 14.1 в 6-й рус. редакции на стр....

(dynamic_cast) Восходящее приведение типа.(объяснить принцип работы) - C++
Вот восходящее приведение типа: class B { }; class C : public B { }; class D : public C { }; void f(D* pd) { ...

Нисходящее перемещение кода при глобальном планировании - C++
Здравствуйте, прошу помощи в реализации данной темы. Суть такова, создать программу, которая получает на вход граф потока данных(я думаю,...

Преобразование типа или преобразование типа указателя ? - C++
Добрый день. Помогите пожалуйста понять что делает вот эта команда: out.write ((char *) &n, sizeof n); Она что, перед записью в файл...

Восходящее преобразование - Java
помогите пожайлуста разобраться, почему выдаёт ошибку... public class A{ public int f1(){return 1;}; public int...

Восходящее преобразование, объяснить код - Java SE
Всем привет! Мне не понятен один момент в восходящем преобразовании. Есть два класса: один базовый, другой производный от базового. В...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ProNoooob
72 / 72 / 6
Регистрация: 14.10.2009
Сообщений: 121
18.09.2012, 15:47     Восходящее и нисходящее преобразование (Upcasting and Downcasting) #2
Это про наследование.

Upcasting - преобразование вверх по иерархии. То есть от классов наследников к базовым классам.
Смысл в том, что ты можешь создать десяток наследников у класса. Абсолютно разных.
Взять у них указатели и преобразовать их к типу базового класса. Теперь ты можешь например сложить их в массив и вызывать методы базового класса. Но вызываться при этом будут методы классов наследников.

Downcasting - преобразование вниз по иерархии. То есть от базового типа к конкретному.
Выполняется в ручном режиме. То есть программист сам должен знать, что этот указатель на самом деле указывает на конкретный тип, а не на базовый.
Считается, что в хорошо написанной программе таких преобразований делать не надо.
electromind
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 55
18.09.2012, 16:19  [ТС]     Восходящее и нисходящее преобразование (Upcasting and Downcasting) #3
вот если бы еще пример кода для наглядности, чтобы так сказать пощупать это все руками - было бы вообще супер
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2012, 17:30     Восходящее и нисходящее преобразование (Upcasting and Downcasting)
Еще ссылки по теме:

Нисходящее приведение типа RTTI - Java
А не подскажут ли спецы можно ли выполнить такое приведение (аналог традиционного джавоского AnyClass c = (AnyClass)vector.get(i);) если...

Что такое нисходящее проектирование программного модуля - C#
Мне дано задание разработать приложение "органайзер" с использованием нисходящего проектирования программного модуля. Что мне нужно...

Символическое дифференцирование-ввод формулы в связный список, преобразование в ПОЛИЗ, обратное преобразование - Pascal
Прошу помогите мне. Символическое дифференцирование-ввод формулы в связный список, преобразование в ПОЛИЗ, обратное преобразование в...

Нормальное преобразование/ортогональное преобразование - Алгебра
Добрый день. Немного запутался в обозначениях в процессе изучения алгебры и хотел бы задать такие вопросы: ...

Быстрое преобразование Фурье и ошибка "Неявное преобразование типа" - C#
А подскажите еще по одной прблемке: Есть программа реализующая БПФ (ну должна по крайней мере это делать) using System; using...

Z-преобразование и преобразование Фурье - ТФКП
Здравствуйте Изучаю цифровую обработку сигналов по учебнику. В одной из глав посвященной связи между z преобразованием и...


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

Или воспользуйтесь поиском по форуму:
ProNoooob
72 / 72 / 6
Регистрация: 14.10.2009
Сообщений: 121
18.09.2012, 17:30     Восходящее и нисходящее преобразование (Upcasting and Downcasting) #4
Цитата Сообщение от electromind Посмотреть сообщение
вот если бы еще пример кода для наглядности, чтобы так сказать пощупать это все руками - было бы вообще супер
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
29
30
31
32
33
34
35
36
37
#include <stdio.h>
 
class A
{
    virtual void print() = 0;
};
 
class B: public A
{
    void print()
    {
        printf("B");
    }
};
 
class C: public A
{
    void print()
    {
        printf("C");
    }
};
 
int main()
{
    // Upcasting
    A *a1 = new B();
    A *a2 = new C();
 
    // Downcasting
    B *b1 = dynamic_cast<B *>(a1);
 
    // Error
    B *b2 = dynamic_cast<B *>(a2);
 
    return 0;
}
Оператор dynamic_cast в рантайме проверяет типы объектов.
Если они не совпадают, то он возвращает ноль.
Yandex
Объявления
18.09.2012, 17:30     Восходящее и нисходящее преобразование (Upcasting and Downcasting)
Ответ Создать тему
Опции темы

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