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

Usunięta treść Dodana treść
→‎Definicja klasy: Właśnie tytuł. Upierdliwie będę się przyczepiał, że typy się deklaruje. A klasa to też typ właśnie. I dlatego zmieniam to na "deklarację" + wyjaśniam czemu.
Lethern (dyskusja | edycje)
revert - proponuję przeczytać różnicę między deklaracją a definicją. Reszta opisu to podstawy - a te są w podręczniku C
Linia 18:
Wygląda to jak deklaracja zwykłej zmiennej i tak jest w istocie – w C++ tworząc klasę definiuje się '''nowy typ danych'''. Podobnie jak w przypadku zmiennych, można utworzyć '''wiele''' obiektów danej klasy.
 
== DeklaracjaDefinicja klasy ==
Ogólny szablon deklarowaniadefiniowania klas w C++ wygląda następująco:
<source lang="cpp">
class NaszaNazwaKlasy {
... // deklaracje pólpola i metodmetody składowychskładowe klasy
};
</source>
 
Po słowie kluczowym '''class''' następuje nazwa naszej klasy (prawidła jej nazywania są takie same jak dla zmiennych). <br>
W nawiasach klamrowych umieszcza się deklaracjedefinicje składowych klasy: '''pól''' i '''metod''' określając dla nich [[#Kontrola dostępu|specyfikatory dostępu]].<br>
Należy pamiętać żeo deklarację klasy, jak każdą inną deklarację w językach C/C++ kończy się średnikiemśredniku za klamerką zamykającą definicję klasy.
 
Oto przykładowa deklaracjadefinicja klasy:
 
<source lang="cpp">
Linia 36:
public: //pola i metody są publicznie dostępne
 
//deklarowaniedefiniowanie pól
int poleInt;
float poleFloat;
Linia 46:
}; //pamiętaj o średniku!
</source>
 
 
Uwaga: Otóż istotne jest aby zauważyć iż klasy są deklarowane. Po napotkaniu deklaracji kompilator języka wie, że kiedy w zakresie ważności deklaracji wystąpi deklarowana nazwa, to ma być ona traktowana jako typ zmiennej, której nazwa wystąpi po nazwie typu.
Zakresem ważności klasy jest blok funkcjonalny programu, w którym występuje deklaracja.
 
Jest to o tyle istotne, o ile wiemy gdzie ważny będzie obiekt danej klasy, co więcej - gdzie w naszym programie może się w ogóle pojawić instancja określonej klasy. Główny nacisk na zakres kładzie jednak kompilator, który zwalnia zmienne (również obiektowe), których zakres się kończy (czyli poza { blokiem_w_którym_je_utworzono }).
 
Oznacza to również, że nie będzie można utworzyć instancji klasy zdefiniowanej w bloku programu poza tym blokiem. Z tego powodu bardzo wielu programistów decyduje się na deklarację globalną wszystkich klas, ale też struktur, unii i innych, własnych typów złożonych.
 
== Użycie klasy ==