Spratelene funkce – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Spratelene funkce – C / C++ – Fórum – Programujte.comSpratelene funkce – C / C++ – Fórum – Programujte.com

 

klinki0
Návštěvník
6. 4. 2008   #1
-
0
-

Zdravim :)
Udelal sem si tridu na pocitani s komplexnimi cisly, ale mam tam par nejasnosti...
Napr. spratelene funkce
Naucil sem se je z knizky Mistrostvi v C++ a zacal sem je pouzivat, ale ted sem se nad tim hloubeji zamyslel a pripada mi divne vyuzivat je na to na co je vyuzivam..
konkretne tyto funkce:



friend ostream & operator << (ostream & os, const Cnumber & cn);
friend void operator >> (istream & os, Cnumber & cn);
friend Cnumber operator + (double n, Cnumber & cn);
friend Cnumber operator - (double n, Cnumber & cn);
friend Cnumber operator * (double n, Cnumber & cn);
friend Cnumber operator / (double n, Cnumber & cn);

Z nich zadna, krome te druhe nemeni vnitrni stav objektu (tudiz by asi zadna krome te druhe logicky nemela byt spratelena ?)
Navic ani ta druha funkce nemusi byt spratelena, jelikoz trida Cnumber ma i verejne metody pomoci kterych lze nastavit jeji hodnoty..

Na druhou stranu zase hned vidim ktere metody s touto tridou pracuji :) ale zase bych to mohl uvect mimo tridu... (to bych to videl taky..)

Jak by to tedy melo spravne byt? Jo a jeste neco existuje nejaka moznost zapisu komplexniho cisla ve tvaru
Cnumber X;
X = 10 + 10i ?
(podle me to nejde, protoze operator prirazeni pozaduje pokud vim pouze jeden parametr a tady se mu snazim narvat dva..)

Nahlásit jako SPAM
IP: 85.13.98.–
klinki0
Návštěvník
6. 4. 2008   #2
-
0
-

Jeste hlavickovy soubor ;)
(kdyby slo upravit prilohy tak bych to dal cele do jednoho zipu - uvedomil sem si to pozde)
PS: jestli jde upravit prilohy tak se omlouvam, nevsiml jsem si toho.

Nahlásit jako SPAM
IP: 85.13.98.–
tmi0
Věrný člen
6. 4. 2008   #3
-
0
-

co se tyce pretizeni operatoru, nemuzes zmenit pocet jejich parametru. ovsem dalo by se to vyresit tim ze by onim parametrem byl string ve tvaru "a + b*i" :]
to ze je funkce friend znamena ze muze pracovat s private slozkou objektu (tedy volat metody + menit a cist data - normalni funkce je cist neumi (primo, pokud nevyuzijes nejakou public metodu objektu)) - tedy friend museji byt vsechny.

Nahlásit jako SPAM
IP: 213.226.230.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
klinki0
Návštěvník
6. 4. 2008   #4
-
0
-

ano to jsem se docetl jiz v te knizce Mistrostvi v C++, ale zajimalo by me, jestli je vyhodnejsi pouzivat tyto friend funkce, nebo k tomu pristupovat pomoci verejneho rozhrani setImaginary() resp. setReal()
(ale ted me napada ze pristup primo k privatni datove polozce je asi o dost rychlejsi nez neprimy pristup pres metodu ktera ji meni co?)

Nahlásit jako SPAM
IP: 85.13.98.–
tmi0
Věrný člen
7. 4. 2008   #5
-
0
-

obecne: cim vic funkci volas, tim horsi. totiz kazda funkce musi na zasobnik programu napsat navratovou adresu, parametry, atd. (jeste horsi to je u virtualnich funkci), takze primej pristup a friend funkce jsou v tomhle pripade lepsi (jo a pokud mas ty dve promenny private a metody jak je cist a menit tak bys mel mozna lepsi je deklarovat jako public. ja vim, neni to uplne v souladu s "objektovou filozofii", ale je to proste efektivnejsi. kdyz chces neco menit, proc na to volat funkci kdyz to muzes proste primo zmenit ze?).
oni vlastne cely objekty sou prasarna, co se tyce komplexnich cisel nejjednodussi by jsi mel deklarovat je proste jako dve realny cisla a pracovat s nima tak, ale holt objekty jsou pohodlnejsi tak se pouzivaji.

Nahlásit jako SPAM
IP: 213.226.230.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 43 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý