Diskuze: volanie funkcie triedy
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
???
Z definice třídy vyplývá, že můžeš volat funkci takto:
A a;
a.func();
Netuším, proč bys chtěl func().func().... ale je to samozřejmě možné - stačí, když ti funkce func() vyrobí nový objekt obsahující funkci se jménem func() a vrátí to returnem.
ja som si to nevymyslel, dostal som take zadanie, no ale spravil som to tak pred tym a nefungovalo to... sice, som vracial *this a nie objekt, vyskusam, vdaka
Toto tedy nefunguje?
class A {
public:
A & func(void) { ... return *this; }
}
Ono tohle řetězení volání má svůj význam. Například u návrhového vzoru Builder (popř. při postupné inicializaci objektu) zjednodušuje zápis.
userbuilder.setName("Jan").setSurName("Novák").setAddress(...);
{/code}
Jen ještě doporučuji si na vracení referencí z funkcí moc nezvykat. V obecném případě to může být hodně nebezpečné (reference ti nezaručuje, že daný objekt ještě existuje). V tomhle případě je to ale v pořádku.
Můžu se zeptat, k čemu totok vůbec je?
Přijde mi to naprosto šílený a matoucí způsob.. Má to nějaké geniální využití?
Ano má,
třeba nějaký container, kde přidáváš prvky pomocí Add(), různé
buildery jak už výše se psalo a mnoho dalšího. Naopak mi přijde, že to je
i docela časté.
Zobrazeno 8 zpráv z 8.