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)
Fórum › C / C++
Soukromé proměnné
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ť.
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é.
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
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
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ů
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
...
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
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
Soukrome zpravy — založil zacatecnik
Soukromé zprávy — založil liborb
Soukromé zprávy na mobilu — založil liborb
Off Topic: Soukromě hledám obchodního zástupce — založil VladislavK
Vlozeni promenne z Java Scriptu do PHP promenne — založil Systém
Moderátoři diskuze