// 在使用时需要注意：被转换对象obj的类型T1必须是多态类型，即T1必须公有继承自其它类，或者T1拥有虚函数（继承或自定义）。若T1为非多态类型，使用dynamic_cast会报编译错误。

// A为非多态类型

class A {};

// B为多态类型

class B {

public:
  virtual ~B() {}
};

// D为非多态类型

class D : public A {};

// E为非多态类型

class E : private A {};

// F为多态类型

class F : private B {};
