C++/Czym jest obiekt: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Gang65 (dyskusja | edycje)
Gang65 (dyskusja | edycje)
Linia 49:
== Użycie klasy ==
Sama definicja klasy nie wystarczy, aby uzyskać dostęp do jej składowych. Należy stworzyć obiekt. Można przyjąć, że obiekt to zmienna typu klasowego. Deklaracja obiektu:
<presource classlang="lang-cpp">NazwaKlasy Obiekt;</presource>
 
Dostęp do pól i metod uzyskuje się operatorem wyłuskania ('''.'''):
<presource classlang="lang-cpp">
Obiekt.poleInt = 0;//przypisanie wartości polom
Obiekt.poleFloat = 9.04;
Obiekt.Metoda1();//wywołanie metody obiektu
</presource>
 
W przypadku deklaracji wskaźnika do obiektu:
<pre class="lang-cpp">NazwaKlasy *ObiektWsk = new NazwaKlasy;</pre>
operatorem wyłuskania staje się '''->''':
<presource classlang="lang-cpp">
ObiektWsk->poleInt = 0; //przypisanie wartości polom
ObiektWsk->poleFloat = 9.04;
ObiektWsk->Metoda1(); //wywołanie metody obiektu
</presource>
 
Należy pamiętać o zniszczeniu obiektu przed zakończeniem działania programu:
<presource classlang="lang-cpp">
delete ObiektWsk;
</presource>
 
=== Przykład ===
Stwórzmy klasę kostki do gry:
<presource classlang="lang-cpp"><nowiki>
class Kostka{
public:
Linia 78 ⟶ 81:
void Losuj();
};
</source>
</nowiki></pre>
 
Po deklaracji klasy, zadeklarujemy jeszcze metodę ''Losuj()'' tej klasy:
<presource classlang="lang-cpp"><nowiki>
void Kostka::Losuj()
{
wartosc = rand()%maks + 1;
}
</source>
</nowiki></pre>
Warto zwrócić uwagę w jaki sposób się to robi. Nazwą metody dowolnej klasy jest ''NazwaKlasy::NazwaMetody''.
Poza tym aby uzyskać dostęp do pól klasy, w której istnieje dana metoda nie stosuje się operatora wyłuskania.
 
Po tym można napisać resztę programu:
<presource classlang="lang-cpp"><nowiki>
int main()
{
Linia 99 ⟶ 103:
return 0;
}
</source>
</nowiki></pre>
 
== Autorekursja ==