Posty

Wyświetlanie postów z lipiec, 2017

Konstruktory w języku C++. Szczegółowa analiza krok po kroku

Cześć! Zgodnie z obietnicą z poprzedniego postu, dzisiaj zajmiemy się konstruktorami. Operatorem przypisania(którego efekt działania jest podobny do konstruktora kopiującego) zajmiemy się innym razem. Od czego należy zacząć ? Od definicji. Jest to specjalna metoda w ciele klasy, wywoływana na samym początku istnienia obiektu. Na razie wystarczy definicji. Teraz wyjaśnijmy sobie jej znaczenia. Jak widać konstruktor będzie dosyć podobny do zwykłych metod. Ma on jedną tą różnicę że wywołuje się na samym początku istnienia instancji klasy(czyli obiektu). Jak wygląda zapis ? #include <iostream> class MyClass { public: MyClass() { std::cout<<"To ja konstruktor.\n"; } }; int main(){ MyClass myClass; } I oto mamy Nasz konstruktor. No w sumie fajnie, ale po co mi konstruktor ? Konstruktor wywołuje się na samym początku istnienia obiektu, przez co jest możliwe zainicjowanie zmiennych w klasie bez narażenia się na ich odczyt, gdy jeszcze nie i

Przyjaźnienie klas i atrybut private

Cześć! Na początku wyjaśnimy definicje. Czym jest przyjaźnienie klas ? Jest to możliwość ujrzenia prywatnych danych przez inną klasę. Co ważne, to klasa definiuje kto jest jej przyjacielem, a nie bezpośrednio klasa, która korzysta z tych dobrodziejstw korzysta. Atrybut private - Coś prywatnego, zastrzeżonego tylko dla wybranych. W tym konkretnym przykładzie będą to atrybuty prywatne klasy. Po co to ? Prywatne znaczy nie dostępnego dla każdego. Nie zawsze chcemy dzielić informacje między wszystkie dostępne klasy. Wiąże się z tym zasada nie udostępniania informacji, których nie potrzebują. Listonosz, który przynosi Nam pocztę powinien wiedzieć gdzie mieszkamy, ale nie koniecznie musi wiedzieć, jakim samochodem jeździmy. Oczywiście jeśli nie jest to Fiat Multipia. Jak to wykorzystać w programowaniu obiektowym ? #include <iostream> struct Set; struct MyStruct { private: int value=0; void setValue(int v) { value = v; } public: void showValue() { std::cout&l