animalclassdynamiccast.cpp

来自「C++ sample code, for the book: C++ blac」· C++ 代码 · 共 52 行

CPP
52
字号
#include <iostream>
using namespace std;

class animal 
{                     
public:
    void eat();
    void sleep();
    virtual void breathe(); 
};

class fish : public animal 
{
public:
    void breathe();
    void swim();
};

void animal::breathe(){cout << "Breathing..." << endl;}
void animal::eat(){cout << "Eating..." << endl;}
void animal::sleep(){cout << "Sleeping..." << endl;}
void fish::breathe(){cout << "Bubbling..." << endl;}
void fish::swim(){cout << "Swimming..." << endl;}

int main()
{
    animal animal_object;
    animal *animal_pointer;

    fish fish_object;
    fish *fish_pointer;

    //Cast from fish to animal
    fish_pointer = &fish_object;
    animal_pointer = dynamic_cast<animal *>(fish_pointer);

    if(fish_pointer)
        cout << "Made the conversion fish* to animal*." << endl;
    else
        cout << "Could not make the conversion fish* to animal*." << endl;

    //Cast from animal to fish
    animal_pointer = &animal_object;
    fish_pointer = dynamic_cast<fish *>(animal_pointer);

    if(fish_pointer)
        cout << "Made the conversion animal* to fish*." << endl;
    else
        cout << "Could not make the conversion animal* to fish*." << endl;

    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?