angevoyageur: Dopo frutta (mela, pera), gatto, cane e animale. La mancanza di immaginazione è terribile quando si parla di oop. (ciclope993, non su di te, ma su wikipedia.) Quale programma reale ha bisogno di una classe "animale" con un metodo "parlare". Posterò un esempio di "commercio" il più presto possibile.
Script di esempio leggermente più 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;
}
Quello che non avevo notato prima è che non sembra essere possibile avere funzioni virtuali senza corpo se c'è un riferimento alla classe base. Nell'esempio precedente non si può fare quanto segue:
class Animal {
public: virtualstring talk();
};
...mentre in C++ si può fare quanto segue:
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());
}
Quindi come chiamereste le classi gatto e cane, sono sottoclassi di animali? Potreste creare un'altra sottoclasse di cane nella classe cane e chiamarla classe pitbull?
Sì, è esattamente così. E quando si usano queste classi, si usa una variabile e si influenzano tutti gli oggetti di una classe e delle sue sottoclassi. Come mostrato nell'esempio di cyclops993 ( funzione principale), quando chiami talk() viene usata la funzione good.
Dopo frutta (mela, pera), gatto, cane e animale. La mancanza di immaginazione è terribile quando si parla di oop. (ciclope993, non su di te, ma su wikipedia.) Quale programma reale ha bisogno di una classe "animale" con un metodo "parlare". Posterò un esempio di "commercio" il più presto possibile.
Script di esempio leggermente più completo:
Quello che non avevo notato prima è che non sembra essere possibile avere funzioni virtuali senza corpo se c'è un riferimento alla classe base. Nell'esempio precedente non si può fare quanto segue:
...mentre in C++ si può fare quanto segue:
Quindi come chiamereste le classi gatto e cane, sono sottoclassi di animali? Potreste creare un'altra sottoclasse di cane nella classe cane e chiamarla classe pitbull?
Ok, questo è abbastanza pulito, penso che farò qualche sforzo per imparare questo
Ok, questo è abbastanza chiaro, penso che farò qualche sforzo per imparare questo
Per esempio:
...I Pitbull non solo possono parlare, come i gatti e gli altri cani, ma possono anche minacciare le cose.