Mit jelent ez a sor? C++
/*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; }
É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.
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.
Amit küldtél linket az semmit sem mond.
Segíts lécci.
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.
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 *>
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?
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.
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 :)
É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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!