Class C++类铸件
Galera说,我们的目标是从一个地方到另一个地方 伙计们,我正在尝试创建一个对象,该对象可以实例化继承它的其他类型:Class C++类铸件,class,object,casting,Class,Object,Casting,Galera说,我们的目标是从一个地方到另一个地方 伙计们,我正在尝试创建一个对象,该对象可以实例化继承它的其他类型: #include <iostream> #include <cstdlib> class Animal { public: char *nome; Animal (char *nome) { this->nome = nome; } }; class Cac
#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;
}
其思想是也从超类访问子类属性
我不知道这是一个强制转换还是多态性,在java中我知道是可能的,但是C++不能做到。p>
感谢您的帮助。您可以,但基类了解其子类是一种糟糕的设计:
int main() {
Animal *animal;
animal = new Cachorro("Scooby", true);
Cachorro * c = reinterpret_cast<Cachorro*>(animal);
std::cout << animal->nome << ", " << c->enterraOsso << std::endl;
animal = new Passaro("Piopio", false);
Passaro * p = reinterpret_cast<Passaro*>(animal);
std::cout << animal->nome << ", " << p->voar << std::endl;
}
请用英语提问或发帖。我投票将此问题作为离题题结束,因为它不是用英语的-这是一个只有英语的网站-请尊重网站的规则!