En el siguiente código, mientras que la construcción de obj
en case 1
tendríamos ninguna cómo construir derived
clase demasiado pero es funciones miembro son inaccesibles para obj
. Por lo tanto, mientras que el down- vaciado (es decir, en el caso 2), utilizando obj
como fuente, de todos modos, ¿cómo se ha construido el derived
en él. ¿Por qué requeriría que obj
necesite ser polimórfico?C++ dynamic_cast - requisito polimórficos y downcasting
Si te confundí con mi descripción anterior, ¿Por qué en upcast obj
no es necesario que sea polimórfico, pero mientras está abatido debe estar al usar 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
Gracias.
Nada mal si actualicé explícitamente, lo que claramente dice en los documentos estándar. – Mahesh