[ Pobierz całość w formacie PDF ]
.Dwanajwa¿niejsze z nich to: public (publiczny) i private (prywatny).Wszystkie sk³adowe klasy — dane i metody — s¹ domyœlnie prywatne.Prywatnesk³adowe mog¹ byæ u¿ywane tylko przez metody nale¿¹ce do danej klasy.Sk³adowepubliczne s¹ dostêpne dla innych funkcji i klas.To rozró¿nienie jest wa¿ne,choæ na pocz¹tku mo¿e sprawiaæ k³opot.Aby to lepiej wyjaœniæ, spójrzmy napoprzedni przyk³ad:class Cat{unsigned int itsAge;unsigned int itsWeight;viod Meow();};W tej deklaracji, sk³adowe itsAge, itsWeight oraz Meow() s¹ prywatne, gdy¿wszystkie sk³adowe klasy s¹ prywatne domyœlnie.Oznacza to, ¿e dopóki niepostanowisz inaczej, pozostan¹ one prywatne.Jeœli jednak w funkcji main() napiszesz na przyk³ad:Cat Bobas;Bobas.itsAge = 5; // b³¹d! nie mo¿na u¿ywaæ prywatnych danych!kompilator uzna to za b³¹d.We wczeœniejszej deklaracji powiedzia³eœkompilatorowi, ¿e sk³adowych itsAge, itsWeight oraz Meow() bêdziesz u¿ywa³tylko w funkcjach sk³adowych klasy Cat.W powy¿szym fragmencie kodu próbujeszodwo³aæ siê do zmiennej sk³adowej obiektu Bobas spoza metody klasy Cat.To, ¿eBobas jest obiektem klasy Cat, nie oznacza, ¿e mo¿esz korzystaæ z tychelementów obiektu Bobas, które s¹ prywatne.W³aœnie to jest Ÿród³em niekoñcz¹cych siê k³opotów pocz¹tkuj¹cych programistówC++.Ju¿ê s³yszê, jak narzekasz: „Hej! W³aœnie napisa³em, ¿e Bobas jest kotem,tj.obiektem klasy Cat.Dlaczego Bobas nie ma dostêpu do swojego w³asnegowieku?” OdpowiedŸ brzmi: Bobas ma dostêp, ale ty nie masz.Bobas, w swoichw³asnych metodach, ma dostêp do wszystkich swoich sk³adowych, zarównopublicznych, jak i prywatnych.Nawet, jeœli to ty tworzysz obiekt klasy Cat,nie mo¿esz przegl¹daæ ani zmieniaæ tych jego sk³adowych, które s¹ prywatne.Aby mieæ dostêp do sk³adowych obiektu Cat, powinieneœ napisaæ:class Cat{public:unsigned int itsAge;unsigned int itsWeight;void Meow();};Teraz sk³adowe itsAge, itsWeight oraz Meow() s¹ publiczne.Bobas.itsAge = 5;kompiluje siê bez problemów.Listing 6.1 przedstawia deklaracjê klasy Cat z publicznymi zmiennymisk³adowymi.Listing 6.1.Dostêp do publicznych sk³adowych w prostej klasie0: // Demonstruje deklaracje klasy oraz1: // definicje obiektu tej klasy.2:3: #include4:5: class Cat // deklaruje klasê Cat (kot)6: {7: public: // nastêpuj¹ce po tym sk³adowe s¹ publiczne8: int itsAge; // zmienna sk³adowa9: int itsWeight; // zmienna sk³adowa10: }; // zwróæ uwagê na œrednik11:12:13: int main()14: {15: Cat Mruczek;16: Mruczek.itsAge = 5; // przypisanie do zmiennej sk³adowej17: std::cout
[ Pobierz całość w formacie PDF ]