Soukromé proměnné – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Soukromé proměnné – C / C++ – Fórum – Programujte.comSoukromé proměnné – C / C++ – Fórum – Programujte.com

 

Sony0
Návštěvník
17. 10. 2008   #1
-
0
-

jestli jsem dobře pochopil "soukromost" tak v praxi si můžou všechny objekty dané třídy navzájem číst soukromé proměnné, jde to udělat nějak aby to nešlo nebo si prostě musím vytvořit další třídu? (teďka nemám vyloženě zájem na tom aby to nešlo přečíst jenom bych do toho rád trochu viděl)

Nahlásit jako SPAM
IP: 78.102.47.–
mephi0
Expert
17. 10. 2008   #2
-
0
-

sry ale fakt nechapem. Tušim že rozpravaš o public a private. Použivaju sa k zapuzdreniu. Nejde o to, že niekto nemôže niečo čítať z bezpečnostných dôvodov. ide o princíp zapuzdrenia, teda sa to zablokuje aby to nezavadzalo a bolo jasne že kde sa to neda použivať to nema čo robiť. Taketo veci sa imho lepšie ladia ako tie "stare" dlhe kody s globalnymi premennymi a podobne :)

skus uviesť priklad o čo ti vlastne ide, rad pomôžem ak budem vedieť.

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
bukaj0
Věrný člen
17. 10. 2008   #3
-
0
-

Sony
v praxi si můžou všechny objekty dané třídy navzájem číst soukromé proměnné
Pokud se jedná o třídní (statické, či jak se tomu v C++ nadává) proměnné, tak je mohou číst všechny objekty dané třídy, většinou slouží ke sdílení dat mezi více objekty, korigování chování jednotlivých instancí, nastavení globálního chování všech objektů dané třídy, či podobně. Objektové proměnné nejsou sdíleny všemi objekty dané třídy, ale každý objekt má svoje. Vyjadřují momentální stav objektu.

jde to udělat nějak aby to nešlo nebo si prostě musím vytvořit další třídu?
Nějak nechápu otázku. U třídních proměnných jde o to, že je mohou číst všechny objekty dané třídy, a objektové proměnné má každý objekt své.

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Sony0
Návštěvník
17. 10. 2008   #4
-
0
-

no myslel sem to přibližně takle:
kdybych měl třídu s nějakou soukromou proměnou a metodou pro výpis této proměnné s argumentem na objekt této třídy a vytvořil si dva objekty této třídy, tak mi jeden dokáže vypsat onu soukromou proměnnou toho druhého objektu a naopak...přitom jde o soukromé proměnné tak jakto že si je takle navzájem sdělujou

Nahlásit jako SPAM
IP: 78.102.47.–
KIIV
~ Moderátor
+43
God of flame
17. 10. 2008   #5
-
0
-

te vubec nechapu... princip zapouzdreni (tj schovavani promennejch) je v tom aby si k promennejm v objektu mohl pristupovat pouze pomoci metod objektu... aby si tam nemohl dat data se kterejma by si objekt nevedel rady...
aby se pak dalo neco vypsat musis mit verejnou metodu na vypsani... verejna metoda je pristupna z venku ... a tak dale..
ale urcite te objekt nepusti primo k te skryte promenne

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
MaS0
Návštěvník
17. 10. 2008   #6
-
0
-

To Sony : nevím , ale myslím si, že by se mohla použít soukromá statická proměnná, aby mohli objekty stejné třídy třídy přistupovat k společným datům

Nahlásit jako SPAM
IP: 195.146.114.–
Sony0
Návštěvník
18. 10. 2008   #7
-
0
-

takle to bude nejlíp:




class data{
public:
data(int cislo):mojeHodnota(cislo){}
~data(){}
int ukaz(data neco){return neco.mojeHodnota;}
private:
int const mojeHodnota;
};

int main()
{
data neco1(1);
data neco2(2);
cout<<neco1.ukaz(neco2);
return 0;
}



dostává mě to že se takle daj těma veřejnýma metodama dostávat proměnné i z jiných objektů

Nahlásit jako SPAM
IP: 78.102.47.–
czbero0
Stálý člen
18. 10. 2008   #8
-
0
-

Metodami jakéhokoliv objektu nemůžeš přistupovat k žádným privátním proměnným žádného jiného objektu, tvůj příklad fungovat nebude.

Nahlásit jako SPAM
IP: 62.240.178.–
http://moddb.com/mods/police-brutality/
Sony0
Návštěvník
18. 10. 2008   #9
-
0
-

To czbero : kdyby to nefungovalo nedával bych to sem, ve výstupu se mi zobrazila dvojka...

Nahlásit jako SPAM
IP: 78.102.47.–
KIIV
~ Moderátor
+43
God of flame
18. 10. 2008   #10
-
0
-

no funguje to...
tezko rict jestli je to proti OOP principu... precijen je to stejna trida, takze by si tam dalo predpokladat, ze si navzajem snad nekonzistentni data nebudou nahravat

...

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Sony0
Návštěvník
18. 10. 2008   #11
-
0
-

jj taky sem si todle řikal, ještě mě napadlo jestli jakoby ty třídy akorát nevytváří něco jako další úroveň nějakého oboru platnosti jako vnořené fce atd...čili co nepřečuhuje platnost třídy je navzájem bráno jako společné....

Nahlásit jako SPAM
IP: 78.102.47.–
KIIV
~ Moderátor
+43
God of flame
18. 10. 2008   #12
-
0
-

no spis se rekne tato promenna patri jen tride data ....

a kdyz k ni pristupujes z jineho objektu zepta se: je to trida jmenem data? pokud ne nemas sanci ale pokud ano tak si delej co chces

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Sony0
Návštěvník
18. 10. 2008   #13
-
0
-

hm...možná jo no...

díky za odpovědi ;)

Nahlásit jako SPAM
IP: 78.102.47.–
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, 135 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ý