Dobrý den, projíždím knížku c++ za 21 dni a tekom sem narazil na problem. V výpisu třeba 10.15:
#include <iostream>
using namespace std;
class KOCKA
{
public:
KOCKA(); // výchozí konstruktor
// konstruktor pro kopírování a destruktor zmizely!
int ZiskejVek() const { return *vekKocky; }
int ZiskejVahu() const { return *vahaKocky; }
void NastavVek(int vek) { *vekKocky = vek; }
KOCKA & operator=(const KOCKA &);
private:
int *vekKocky;
int *vahaKocky;
};
KOCKA::KOCKA()
{
vekKocky = new int;
vahaKocky = new int;
*vekKocky = 5;
*vahaKocky = 9;
}
KOCKA & KOCKA::operator=(const KOCKA & ptr)
{
if (*this == ptr)
return *this;
*vekKocky = ptr.ZiskejVek();
*vahaKocky = ptr.ZiskejVahu();
return *this;
}
int main()
{
KOCKA micka;
cout << "Vek Micky je: " << micka.ZiskejVek() << endl;
cout << "Nastaveni veku Micky na 6...\n";
micka.NastavVek(6);
KOCKA fousek;
cout << "Vek Fouska je: " << fousek.ZiskejVek() << endl;
cout << "Zkopirovani Micky na Fouska...\n";
fousek = micka;
cout << "Vek Fouska je: " << fousek.ZiskejVek() << endl;
return 0;
}
nikde nepopisuje proč se tady: KOCKA & operator=(const KOCKA &); za KOCKA použije operator odkazu pak samozřejmě musí byt automaticky i tady: KOCKA & KOCKA::operator=(const KOCKA & ptr) ale sem se chtěl zeptat co to dělá jestili se KOCCE přiřazuje jako odkazu to co je uvnitř operator=(const KOCKA & ptr){} a nebo něco jiného.. Popřípadě co by to udělalo kdybych napsal za KOCKA *(pointer). Díky za odpověd
Fórum › C / C++
C++ za 21dni-Problem v dni 10
Popřípadě to samé v výpisu 10.11:
#include <iostream>
using namespace std;
class Citac
{
public:
Citac();
~Citac(){}
int ZiskejHodnotu()const { return hodnota; }
void NastavHodnotu(int x) { hodnota = x; }
void Inkrementace() { ++hodnota; }
const Citac& operator++ ();
private:
int hodnota;
};
Citac::Citac():
hodnota(0)
{}
const Citac& Citac::operator++()
{
++hodnota;
return *this;
}
int main()
{
Citac i;
cout << "Hodnota citace i je " << i.ZiskejHodnotu() << endl;
i.Inkrementace();
cout << "Hodnota citace i je " << i.ZiskejHodnotu() << endl;
++i;
cout << "Hodnota citace i je " << i.ZiskejHodnotu() << endl;
Citac a = ++i;
cout << "Hodnota a: " << i.ZiskejHodnotu();
cout << " a hodnota i: " << i.ZiskejHodnotu() << endl;
return 0;
}
He, no necakaj ze v knizkach s nazvom "Naucte sa XXX za YY dni" (kde YY je cislo pod 50 ;) bude nieco poriadne vysvetlene ;)
Ale aj tak som nepochopil co sa vlastne pytas... Ale odkazy sa pouzivaju aby si nezasieral stack tym ze tam a z neho budes tie objekty kopirovat, nehovoriac o tom ze to zerie cas ked je ta trieda vacsia...
Jj jasně za 21 dni to je blbost :-), radili by ste mi raděj Mistrovství? Jinak si mi na to odpověděl... (asi). nebylo mi totiž jasné jestli ten odkaz poukazuje na tělo funkce nebo k čemu tam je .. takže z toho co jsem pochopil asi ano. Diky
X-time: No hele Mistrovství v C++ je asi nejlepší kniha o C++ co se dá v Čj koupit, já jsem do ní šel taky, pak jsem teprve pochopil, že jsem vubec nemusel váhat a měl do ní jí hned. Jestli sis už koupil to naučte, tak ho dočti. Do Ms můžeš jít potom, v Ms to je hezky podrobně vysvětleno, takže se nemušíš bát, že budeš číst to samí, nebudeš.
ristii: Pro první začátky bych ti doporučil Dev-C++ od Bloodshedu (download http://www.bloodshed.net/download.html ), do budoucna třeba Visual studio od Microsoftu.
V Dev-C++ založíš konzolovej projekt a pak co napíšeš kod můžeš dát kompilovat(ve Vs dáš build jinak se to nemění ;) ). Ale neřikej, že to v té knize nikde nepíšou!
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Nema nekdo e-book Myslíme v C++ a nebo Naučte se C++ za 21dní — založil Vazli
C++ za 21 dni — založil sexmachina
Naučte se C++ za 21 dní — založil Erik
Odpočet dní — založil cheeester
JCalendar refresh specialnych dni — založil . . .
Moderátoři diskuze