⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dynamic_cast.cpp

📁 Advanced Internet Programming Lecture 2 C/C++ Review Li,Suke School of Software and Microelectroni
💻 CPP
字号:
#include <iostream>using namespace std;class Base {public:  virtual void f() { cout << "Inside Base\n"; }  // ...};class Derived : public Base {public:  void f() { cout << "Inside Derived\n"; }};int main(){  Base *bp, b_ob;  Derived *dp, d_ob;  dp = dynamic_cast<Derived *> (&d_ob);  if(dp) {    cout << "Cast from Derived * to Derived * OK.\n";    dp->f();  } else    cout << "Error\n";  cout << endl;  bp = dynamic_cast<Base *> (&d_ob);  if(bp) {    cout << "Cast from Derived * to Base * OK.\n";    bp->f();  } else    cout << "Error\n";  cout << endl;  bp = dynamic_cast<Base *> (&b_ob);  if(bp) {    cout << "Cast from Base * to Base * OK.\n";    bp->f();                 } else    cout << "Error\n";  cout << endl;  dp = dynamic_cast<Derived *> (&b_ob);  if(dp)    cout << "Error\n";  else    cout << "Cast from Base * to Derived * not OK.\n";  cout << endl;  bp = &d_ob; // bp points to Derived object  dp = dynamic_cast<Derived *> (bp);  if(dp) {    cout << "Casting bp to a Derived * OK\n" <<      "because bp is really pointing\n" <<      "to a Derived object.\n";    dp->f();  } else    cout << "Error\n";  cout << endl;  bp = &b_ob; // bp points to Base object  dp = dynamic_cast<Derived *> (bp);  if(dp)    cout << "Error";  else {    cout << "Now casting bp to a Derived *\n" <<      "is not OK because bp is really \n" <<      "pointing to a Base object.\n";  }  cout << endl;  dp = &d_ob; // dp points to Derived object  bp = dynamic_cast<Base *> (dp);  if(bp) {    cout << "Casting dp to a Base * is OK.\n";                                                        bp->f();  } else    cout << "Error\n";  return 0;}

⌨️ 快捷键说明

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