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
 11/23 A kérdező kommentje:

Értem.

Írtad,hogy itt (Zoo[i]) megvizsgálja az i elemet.

És itt mi történik?

<Cat *>


Légyszi még ezt írd le úgy mint a (Zoo[i]) esetében.

2012. jún. 15. 02:05
 12/23 _Jessy_ ***** válasza:

[link]

van az magyarul is, csak keresni kell. Másik jó tanács, hogy nézz körül, és tanulj angolul, mert különben soha nem tanulsz meg programozni.

Bocs az esetleg erős kritika miatt, de ezek a dolgok így működnek.

2012. jún. 15. 13:21
Hasznos számodra ez a válasz?
 13/23 A kérdező kommentje:

Amit küldtél linket az semmit sem mond.

Segíts lécci.

2012. jún. 15. 15:12
 14/23 A kérdező kommentje:
<Cat *> //Ez azt jelenti,hogy Cat típusú objektum esetén adja vissza annak a memóriacímét?
2012. jún. 15. 15:23
 15/23 anonim ***** válasza:

Nem, nem azt jelenti.

Ez így önmamában semmit nem jelent.


Azt tanácsolom, hogy ugorj vissza a könyv első oldalára és kezd előröl.

Rajtad kívül mások is tanultak biztosan abból a könyvből és kérdezősködés nélkül is megértették a lenyegét.


Illetve ha meg ennyire nem megy, akkor ezt lehet nem kéne ennyire erőltetni.

2012. jún. 15. 19:20
Hasznos számodra ez a válasz?
 16/23 A kérdező kommentje:

Tudom mi van abban a könyvben és visszamenőleg mindent tudok.


Egyszerűen a könyv nem írja le,hogy ez minek van itt.

<Cat *>

2012. jún. 15. 19:30
 17/23 A kérdező kommentje:

Már értem talán.

Akkor a <Cat *> lesz a (Zoo[i]) típusának az új típusa igaz.

Mammal-ról átváltsuk Cat típusúra igaz?

2012. jún. 15. 20:57
 18/23 _Jessy_ ***** válasza:

Ezzel nem váltasz semmit sehova!

Mindössze arról van szó, hogy kapsz egy, a Cat osztály egy példányára mutató pointert, ha a megadott memóriaterületen az van. Ez csak egy biztonságos módja annak, hogy elérj egy objektumot, anélkül, hogy valami problémát okozna.

2012. jún. 15. 23:59
Hasznos számodra ez a válasz?
 19/23 _Jessy_ ***** válasza:

Ja, a legfontosabbat kihagytam :)

A (Zoo[i]) típusa fix (feltéve, hogy már van ott valami értelmes). Kis ügyeskedéssel meg lehet ezt is változtatni, de abba nem megyek most bele, mert egyrészt nem értenéd, másrészt pedig igencsak sportszerűtlen :)

2012. jún. 16. 00:03
Hasznos számodra ez a válasz?
 20/23 A kérdező kommentje:

Értem de azt nem tudom,hogy a Cat * miért van < > közé téve.

Nem értem,hogy miért van szükség arra,hogy ezt oda írjam <Cat *>


Légyszíves magyarázd el.

2012. jún. 16. 01:39
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!