在下面的代码中,在构造obj案例1时,我们也构造了一个derived类对象,但它的成员函数是不可访问的obj.因此,在向下转换(即,在情况2中),使用obj作为源时,我们已经在其中构造derived了它.为什么obj需要多态?
如果我把我与上面的描述混淆了,为什么obj在向上转换时不需要多态,但是在向下转换时它确实需要在使用时具有多态性dynamic_cast?
class base
{
public:
base()
{
cout<< " \n base constructor \n";
}
};
class derived : public base
{
public:
derived()
{
cout << " \n derived constructor \n";
}
};
base *obj = dynamic_cast<base*> (new derived); // case 1: explicitly upcasting
derived *OBJ = dynamic_cast<derived*> (obj); // case 2: error
Run Code Online (Sandbox Code Playgroud)