angevoyageur: Después de frutas (manzana, pera), gato, perro y animal. La falta de imaginación es terrible cuando se habla de oop. (cyclops993, no se trata de ti, sino de la wikipedia.) ¿Qué programa real necesita una clase "animal" con un método "hablar". Voy a publicar un ejemplo de "comercio" tan pronto como sea posible.
Script de ejemplo un poco más completo:
class Animal {
public: virtualstring talk() {return"";}
};
class Cat : public Animal {
public: string talk() {return"Meow!";}
};
class Dog : public Animal {
public: string talk() {return"Woof!";}
};
voidOnStart()
{
Animal * random;
if (GetTickCount() % 2 == 0) {
random = new Cat();
} else {
random = new Dog();
}
MessageBox(random.talk());
delete random;
}
Lo que no había notado antes es que no parece ser posible tener funciones virtuales sin cuerpo si hay una referencia a la clase base. En el ejemplo anterior, no se puede hacer lo siguiente:
class Animal {
public: virtualstring talk();
};
...mientras que en C++ se puede hacer lo siguiente:
class Animal {
public: virtualconstchar * talk() = 0; // Pure virtual function
};
class Cat : public Animal {
public: constchar * talk() {return"Meow!";}
};
class Dog : public Animal {
public: constchar * talk() {return"Woof!";}
};
void main()
{
Animal * random;
if (GetTickCount() % 2 == 0) {
random = new Cat();
} else {
random = new Dog();
}
printf(random->talk());
}
Entonces, ¿cómo llamarías a la clase gato y a la clase perro, son subclases de animal? ¿Podrías crear otra subclase de perro en la clase perro y llamarla clase pitbull?
Sí, es exactamente eso. Y cuando se utilizan estas clases, se utiliza una variable y afecta a cualquier objeto de una clase y sus subclases. Como se muestra en el ejemplo de cyclops993 ( función principal), cuando se llama talk() se utiliza la función buena.
Después de frutas (manzana, pera), gato, perro y animal. La falta de imaginación es terrible cuando se habla de oop. (cyclops993, no se trata de ti, sino de la wikipedia.) ¿Qué programa real necesita una clase "animal" con un método "hablar". Voy a publicar un ejemplo de "comercio" tan pronto como sea posible.
Script de ejemplo un poco más completo:
Lo que no había notado antes es que no parece ser posible tener funciones virtuales sin cuerpo si hay una referencia a la clase base. En el ejemplo anterior, no se puede hacer lo siguiente:
...mientras que en C++ se puede hacer lo siguiente:
Entonces, ¿cómo llamarías a la clase gato y a la clase perro, son subclases de animal? ¿Podrías crear otra subclase de perro en la clase perro y llamarla clase pitbull?
Ok, eso es muy bueno, creo que voy a hacer un esfuerzo para aprender esto
Ok, eso es bastante bueno, creo que voy a hacer un esfuerzo para aprender esto
Por ejemplo:
...Los Pitbulls no sólo pueden hablar, como los gatos y otros perros, sino que también pueden amenazar cosas.