Kezdőoldal » Számítástechnika » Programozás » Mit jelent ez a sor? C++

Mit jelent ez a sor? C++

Figyelt kérdés

/*Ezt a sort nem értem:

Cat *pRealCat = dynamic_cast<Cat *> (Zoo[i]);

---------

A 24 órás könyvből tanulok.*/

//main.cpp

# include <iostream>


typedef unsigned short ushort;

typedef unsigned int uint;

using namespace std;



class Mammal {

public:

Mammal(short age): itsAge(age) { cout <<"Mammal Konstruktor \n"; }

Mammal(const Mammal &rhs);

virtual ~Mammal() { cout <<"Mammal virtual Destruktor \n"; }


virtual Mammal* Copy()const { return new Mammal(*this); }

virtual void Speak()const { cout <<"Mammal beszel \n"; }


void SetAge(short age) { itsAge = age; }

short GetAge()const { return itsAge; }

protected:

short itsAge;

private: };


Mammal::Mammal(const Mammal &rhs): itsAge(4) {

cout <<"Mammal copy Konstruktor \n"; }


class Dog: public Mammal {

public:

Dog(short age): Mammal(age) { cout <<"Dog Konstruktor \n"; }

Dog(const Dog &rhs);

virtual ~Dog() { cout <<"Dog virtual Destruktor \n"; }


virtual Mammal* Copy()const { return new Dog(*this); }

virtual void Speak()const { cout <<"Vau,vau \n"; }

protected:

private: };


Dog::Dog(const Dog &rhs): Mammal(rhs) {

cout <<"Dog copy Konstruktor \n"; }


class Cat: public Mammal {

public:

Cat(short age): Mammal(age) { cout <<"Cat Konstruktor \n"; }

Cat(const Cat &rhs);

virtual ~Cat() { cout <<"Cat virtual Destruktor \n"; }


virtual Mammal* Copy()const { return new Cat(*this); }

virtual void Speak()const { cout <<"Miau,miau \n"; }


void Purr()const { cout <<"prrrrrrrrrrr \n"; }

protected:

private: };


Cat::Cat(const Cat &rhs): Mammal(rhs) {

cout <<"Cat copy Konstruktor \n"; }



int main() {

const short numberMammal = 3;

Mammal *Zoo[numberMammal];

Mammal *pMammal = NULL;

short choice,i;


for(i = 0;i < numberMammal;i++) {

cout <<"(1)Dog,(2)Cat: ";

cin >> choice;


if(choice == 1)

pMammal = new Dog(2);

else

pMammal = new Cat(2);

Zoo[i] = pMammal; }


cout << endl;


for(i = 0;i < numberMammal;i++) {

Zoo[i]->Speak();

Cat *pRealCat = dynamic_cast<Cat *> (Zoo[i]);


if(pRealCat)

pRealCat->Purr();

else

cout <<"Huha ez nem macska \n";

delete Zoo[i];

cout << std::endl; }



return 0; }


2012. jún. 14. 00:11
1 2 3
 21/23 anonim ***** válasza:

A dynamic_cast miatt, önmagában semmit nem jelent.


Hasonló példák: [link]

2012. jún. 16. 01:58
Hasznos számodra ez a válasz?
 22/23 _Jessy_ ***** válasza:
Ahogyan az előző is írta: a dynamic_cast önmagában "semmi". '<>'-k között kell megadnod azt, hogy milyen típusú objektumot vársz visszatérési értékként a dynamic_cast-tól.
2012. jún. 16. 10:51
Hasznos számodra ez a válasz?
 23/23 A kérdező kommentje:

Köszönöm jessyy erre vártam ilyen sokat hát ijen nehéz lett volna le írniuk a többieknek.


De amúgy kijavítanálak mert szerintem nem egy objektumot ad vissza hanem annak memóriacímét.

2012. jún. 16. 17:33
1 2 3

További kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!