#include <iostream> using namespace std; class Fish { public: virtual void swim() { cout<<"Fish swims in water"<<endl; } virtual ~Fish(){} }; class Tuna : public Fish { public: void swim() { cout<<"Tuna swims in sea"<<endl; } void becomeDinner() { cout<<"Tuna become dinner"<<endl; } }; class Carp : public Fish { public: void swim() { cout<<"Carp swims in lake"<<endl; } void talk() { cout<<"Carp can talk"<<endl; } }; void detectFishType(Fish *pFish) { Tuna *pTuna = dynamic_cast<Tuna*>(pFish); if (pTuna) { pTuna->becomeDinner(); } Carp *pCarp = dynamic_cast<Carp*>(pFish); if (pCarp) { pCarp->talk(); } pFish->swim(); } //动态类型转换dynamic_cast int main() { Fish fish; //Fish swims in water detectFishType(&fish); Tuna tuna; //Tuna become dinner //Tuna swims in sea detectFishType(&tuna); Carp carp; //Carp can talk //Carp swims in lake detectFishType(&carp); system("pause"); return 0; }
C++基础学习(九),类型转换运算符
猜你喜欢
转载自blog.csdn.net/u012592062/article/details/80375588
今日推荐
周排行