27 lines
672 B
C++
27 lines
672 B
C++
|
|
// dynamic_cast
|
|
#include <iostream>
|
|
#include <exception>
|
|
using namespace std;
|
|
|
|
class Base_Class { virtual void dummy() {} };
|
|
class Derived_Class: public Base_Class { int a; };
|
|
|
|
int main () {
|
|
try {
|
|
Base_Class * ptr_a = new Derived_Class;
|
|
Base_Class * ptr_b = new Base_Class;
|
|
Derived_Class * ptr_c;
|
|
|
|
ptr_c = dynamic_cast< Derived_Class *>(ptr_a);
|
|
if (ptr_c ==0) cout << "Null pointer on first type-cast" << endl;
|
|
|
|
ptr_c = dynamic_cast< Derived_Class *>(ptr_b);
|
|
if (ptr_c ==0) cout << "Null pointer on second type-cast" << endl;
|
|
|
|
} catch (exception& my_ex) {cout << "Exception: " << my_ex.what();}
|
|
|
|
asm volatile ("ecall");
|
|
return 0;
|
|
}
|