C++ Cast de classes : Galera, estou precisando criar uma variável do tipo object que poderá instanciar outros tipos que à herdam.

    #include <iostream>
    #include <cstdlib>
    
    class Animal {
    
    	public:
    	
    	    char *nome;
    	
    	    Animal (char *nome) {
    	        this->nome = nome;
    	    }
    
    };
    
    class Cachorro : public Animal {
    	
    	public:
    	
    	    bool enterraOsso;
    	
    	    Cachorro (char* nome, bool enterraOsso) : Animal(nome) {
    	        this->enterraOsso = enterraOsso;
    	    }
    
    };
    
    class Passaro : public Animal {
    
    	public:
    	
    	    bool voar;
    	
    	    Passaro (char* nome, bool voar) : Animal(nome) {
    	        this->voar = voar;
    	    }
    
    };
    
    int main() {
    
    	Animal *animal;
       
    	animal = new Cachorro("Scooby", true);
    	std::cout << animal->nome << ", " << animal->enterraOsso << std::endl;
       
       	animal = new Passaro("Piopio", false);
    	std::cout << animal->nome << ", " << animal->voar << std::endl;
    	
    	return 0;
    }

A ideia é que a partir da variável da class super eu poderia acessar os atributos da subclass também.
Não sei se isto é cast ou polimorfismo. No java sei que é possível, mas não estou conseguindo fazer em c++.
 
Grato desde já pela ajuda de todos....