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

Не могу разобраться с dynamic_cast - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выбрать книжку, чтобы на отдыхе читать http://www.cyberforum.ru/cpp-beginners/thread1234346.html
скоро еду отдыхать, думал взять с собой какую нибудь не очень толстую книжку (в поезде читать и так на пляже... :)), что нибудь думаю по си++, основные критерии: не толстая и максимально понятная, но в тоже время чтоб в ней не только уж совсем основы освещались... т.к. основы я в основном и так знаю :) про всякие интересные контейнеры типа string и в принципе std почитать... ибо я например знаю...
C++ Сделать так, чтобы предикат работал тоже шаблонно, в зависимости от типа значений, хранимых ей Здравствуйте! Имеется некий предикат, например: bool isInteger (double value){ return static_cast<int>(value)==value; } С помощью него хочу посчитать кол-во элементов, удовлетворяющих предикату: template<typename T> http://www.cyberforum.ru/cpp-beginners/thread1234330.html
Как перегрузить оператор для своего класса? C++
У меня есть класс, .h class Vertex { public: ~Vertex(); Vertex(); double GetX(); double GetY(); double GetZ(); void SetX(double x);
C++ Какую лучше всего в наше время использовать графическую библиотеку?
Какую лучше всего в наше время использовать графическую библиотеку? в VS 2012, слышал об SFML, и Openg. Какую современную и легкую для понимания посоветуете.
C++ Открыть файл по заданному пути http://www.cyberforum.ru/cpp-beginners/thread1234224.html
Нужно, чтобы открывался файл, который, например, находится в C:\TEST#1 Подскажите, пожалуйста, как это сделать?
C++ Можно ли передать указатель на функцию как параметр другой функции? В общем, вопрос. Можно ли, допустим ... int fun1(int x) { ... ... ... return x*1000; } подробнее

Показать сообщение отдельно
stzer
38 / 59 / 17
Регистрация: 26.10.2013
Сообщений: 172
Завершенные тесты: 2
26.07.2014, 14:00  [ТС]     Не могу разобраться с dynamic_cast
DrOffset, Ладно, хорошо.
dynamic_cast используется для проверки типов объектов
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
#include <typeinfo>
 
class Base
{
    virtual void vertFunc()
    { }
};
class Derv1 : public Base
{ };
class Derv2 : public Base
{ };
bool isDerv1(Base *pUnknown)
{
    Derv1 *pDerv1;
    if(pDerv1=dynamic_cast<Derv1*>(pUnknown))
        return true;
    else return false;
}
int main()
{
    Derv1 *d1=new Derv1;
    Derv2 *d2=new Derv2;
    
    if(isDerv1(d1))
        cout<<"d1 - object from class Derv1"<<endl;
    else
        cout<<"d1 - not object class Derv1"<<endl;
    if(isDerv1(d2))
        cout<<"d2 - object from class Derv1"<<endl;
    else
        cout<<"d2 - not object class Derv1"<<endl;
 
    system("pause");
    return 0;
}
Тут более менее все понятно.
Тогда вот, цитата:
"Операция в основном применятся для преобразования указателей родственных классов иерархии, в основном - указателя базового класса в указатель на производный..."
В главе "Изменение типов указателей с помощью dynamic_cast" (Лафоре) есть такое пример:
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
class Base
{
protected: 
    int ba;
public:
    Base() : ba(0)
    { }
    Base(int b) : ba(b)
    { }
    virtual void vertFunc()
    { }
    void show()
    { cout<<"Base: ba = "<<ba<<endl; }
};
class Derv : public Base
{ 
private:
    int da;
public:
    Derv(int b,int d) : Base(b), da(d)
    { }
    void show()
    { cout<<"Derv: ba = "<<ba<<" da = "<<da<<endl; }
};
 
int main()
{
    Base *pBase=new Base(10);
    Derv *pDerv=new Derv(21,22);
    pBase=dynamic_cast<Base*>(pDerv);
    pBase->show();
    pBase=new Derv(31,32);
    pDerv=dynamic_cast<Derv*>(pBase);
    pDerv->show();
    system("pause");
    return 0;
}
Зачем он тут вообще использует dynamic_cast? Я уже голову сломал.
 
Текущее время: 08:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru