//============================================================================ // Name : luentoC3.cpp // Author : vesal // Version : // Copyright : Vapaata riistaa // Description : Hello World in C++, Ansi-style //============================================================================ #include #include using std::cout; using std::endl; using std::string; class cElain { string nimi; double paino; public: cElain(const string &nimi,double paino) { (*this).nimi = nimi; this->paino = paino; } virtual ~cElain() { cout << "Heippa " << nimi << endl; } virtual void aantele() const { // lupaan etten this-> muuta cout << "???" << endl; } virtual void tulosta() const { cout << "Nimi: " << this->nimi << " paino: " << paino << endl; } }; class cKissa : public cElain { int hanta; string vari; int *jalat; public: cKissa(const string &nimi,double paino) : cElain(nimi,paino),hanta(0), vari("punainen") { // Java: super(nimi,paino); jalat = new int[4]; // malloc calloc } cKissa(const string &nimi,double paino, int hanta) : cElain(nimi,paino) { // Java: super(nimi,paino); this->hanta = hanta; } virtual ~cKissa() { delete[] jalat; } virtual void aantele() const { cout << "Miaauu" << endl; } }; class cKoira : public cElain { private: cKissa kissa; cKissa *pkissa; public: cKoira(const string &nimi,double paino) : cElain(nimi,paino), kissa(nimi +"n kissa",200), pkissa(0) { // Java: super(nimi,paino); } virtual ~cKoira() { if ( pkissa != 0 ) delete pkissa; } virtual void aantele() const { cout << "Hau hau" << endl; kissa.aantele(); // if ( pkissa != 0 ) delete pkissa; // pkissa = new cKissa("syötävä kissa",3000); } }; int main() { cKissa mirri("Mirri",18000); // auto cKoira musti("Musti", 4000); mirri.aantele(); mirri.tulosta(); musti.aantele(); cElain *elukat[4]; elukat[0] = &mirri; elukat[1] = &musti; cout << "------------------------" << endl; for (int i=0; i<2; i++) elukat[i]->aantele(); cout << "------------------------" << endl; { cKissa miuku("Miuku",5000); } return 0; }