Co to jest klasa?
Klasa C ++ łączy dane i metody manipulowania danymi w jedno. Ćwiczenia określają także formy przedmiotów. Dane i metody zawarte w klasie są nazywane elementami członkowskimi klasy. Klasa to typ danych zdefiniowany przez użytkownika. Aby uzyskać dostęp do członków klasy, używamy instancji klasy. Możesz zobaczyć klasę jako plan obiektu.
Klasa będzie prototypem domu. Pokazuje położenie i rozmiary drzwi, okien, podłóg itp. Na podstawie tych opisów możemy zbudować dom. Dom staje się przedmiotem. Z prototypu można stworzyć wiele domów. Możliwe jest również tworzenie wielu obiektów z klasy.
Na powyższym rysunku mamy jeden prototyp domu. Na podstawie tego prototypu stworzyliśmy dwa domy o różnych cechach.
W tym samouczku dowiesz się:
- Co to jest klasa?
- Przykład klasy
- Prywatne i publiczne słowa kluczowe
- Definicja obiektu
- Dostęp do członków danych
- Funkcje składowe klasy
- Konstruktorzy i niszczyciele
Deklaracja klasy
W języku C + klasa jest definiowana za pomocą słowa kluczowego class. Powinna po niej następować nazwa klasy. Treść klasy jest następnie dodawana między nawiasami klamrowymi {}.
Składnia:
class class-name{// data// functions};
- Nazwa klasy to nazwa, która ma zostać przypisana do klasy.
- Dane to dane dla klasy, zwykle deklarowane jako zmienne.
- Funkcje są funkcjami klasowymi.
Prywatne i publiczne słowa kluczowe
Musiałeś trafić na te dwa słowa kluczowe. Są modyfikatorami dostępu.
- Prywatny:
Gdy słowo kluczowe private jest używane do zdefiniowania funkcji lub klasy, staje się prywatne. Takie są dostępne tylko z poziomu klasy.
- Publiczny:
Z drugiej strony słowo kluczowe public upublicznia dane / funkcje. Są dostępne spoza klasy.
Definicja obiektu
Obiekty są tworzone z klas. Obiekty klas są deklarowane w podobny sposób, jak deklarowane są zmienne. Musi zaczynać się nazwa klasy, po której następuje nazwa obiektu. Obiekt typu klasy.
Składnia:
class-name object-name;
- Nazwa klasy to nazwa klasy, z której ma zostać utworzony obiekt.
- Nazwa obiektu to nazwa, która ma zostać przypisana do nowego obiektu.
Ten proces tworzenia obiektu z klasy jest nazywany tworzeniem instancji.
Dostęp do członków danych
Aby uzyskać dostęp do publicznych członków klasy, używamy operatora kropki (.). Są to członkowie oznaczeni modyfikatorem dostępu publicznego.
Przykład 1:
#includeusing namespace std;class Phone {public:double cost;int slots;};int main() {Phone Y6;Phone Y7;Y6.cost = 100.0;Y6.slots = 2;Y7.cost = 200.0;Y7.slots = 2;cout << "Cost of Huawei Y6 : " << Y6.cost << endl;cout << "Cost of Huawei Y7 : " << Y7.cost << endl;cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;return 0;}
Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego kodu, aby móc korzystać z jego funkcji.
- Dołączanie przestrzeni nazw std do naszego kodu, aby używać jej klas bez wywoływania jej.
- Zadeklaruj klasę o nazwie Phone.
- Użycie modyfikatora dostępu publicznego, aby oznaczyć zmienne, które zamierzamy utworzyć, jako publicznie dostępne.
- Zadeklaruj zmienny koszt podwójnego typu danych.
- Zadeklaruj zmienną całkowitą o nazwie slots.
- Koniec treści klasy.
- Wywołanie funkcji main (). Logikę programu należy dodać w jego treści.
- Utwórz obiekt o nazwie Y6 typu Phone. Nazywa się to tworzeniem instancji.
- Utwórz obiekt o nazwie Y7 typu Phone. Nazywa się to tworzeniem instancji.
- Uzyskaj dostęp do zmiennej / kosztu składowego klasy Phone za pomocą obiektu Y6. Wartość jest ustawiona na 100,0. Koszt Y6 jest teraz ustawiony na 100,0.
- Uzyskaj dostęp do pól zmiennych / składowych klasy Phone za pomocą obiektu Y6. Wartość jest ustawiona na 2. Szczeliny dla Y6 są teraz ustawione na 2.
- Uzyskaj dostęp do zmiennej / kosztu składowego klasy Phone za pomocą obiektu Y7. Wartość jest ustawiona na 200,0. Koszt Y7 wynosi teraz 200,0.
- Uzyskaj dostęp do pól zmiennych / składowych klasy Phone za pomocą obiektu Y7. Wartość jest ustawiona na 2. Szczeliny dla Y7 są teraz ustawione na 2.
- Wydrukuj koszt Y6 na konsoli obok innego tekstu.
- Wydrukuj koszt Y7 na konsoli obok innego tekstu.
- Wydrukuj liczbę gniazd dla Y6 obok innego tekstu.
- Wydrukuj liczbę gniazd dla Y7 obok innego tekstu.
- Program musi zwrócić wartość po pomyślnym zakończeniu.
- Koniec treści funkcji main ().
Co to jest klasa prywatna?
Dostęp do członków klasy oznaczonych jako prywatne są dostępne tylko przez funkcje zdefiniowane w klasie. Żaden obiekt lub funkcja zdefiniowana poza klasą nie może uzyskać bezpośredniego dostępu do takich elementów członkowskich. Dostęp do członka klasy prywatnej mają tylko funkcje członka i znajomego.
Co to jest klasa chroniona?
Członkowie klasy oznaczeni jako chronione mają przewagę nad członkami oznaczonymi jako prywatne. Dostęp do nich można uzyskać za pomocą funkcji należących do klasy ich definicji. Ponadto można uzyskać do nich dostęp z klas pochodnych.
Przykład 2:
#includeusing namespace std;class ClassA {public:void set_a(int val);int get_a(void);private:int a;};int ClassA::get_a(void) {return a;}void ClassA::set_a(int val) {a = val;}int main() {ClassA a;a.set_a(20);cout << "Value of a is: " << a.get_a();return 0;}
Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego kodu, aby móc korzystać z jego funkcji.
- Uwzględnij przestrzeń nazw std w naszym kodzie, aby używać jej klas bez wywoływania jej.
- Utwórz klasę o nazwie ClassA.
- Użyj modyfikatora dostępu publicznego, aby oznaczyć element członkowski klasy, który ma zostać utworzony, jako publicznie dostępny.
- Utwórz funkcję o nazwie set_a (), która przyjmuje jedną wartość całkowitą val.
- Utwórz funkcję o nazwie get_a ().
- Użyj modyfikatora dostępu prywatnego, aby oznaczyć element członkowski klasy, który ma zostać utworzony, jako dostępny prywatnie.
- Zadeklaruj zmienną całkowitą o nazwie a.
- Koniec treści klasy.
- Użyj nazwy klasy i operatora rozpoznawania zakresu, aby uzyskać dostęp do funkcji get_a (). Chcemy zdefiniować, co robi funkcja po wywołaniu.
- Funkcja get_a () powinna po wywołaniu zwrócić wartość zmiennej a.
- Koniec definicji funkcji get_a ().
- Użyj nazwy klasy i operatora rozpoznawania zakresu, aby uzyskać dostęp do funkcji set_a (). Chcemy zdefiniować, co robi funkcja po wywołaniu.
- Przypisanie wartości zmiennej val do zmiennej a.
- Koniec definicji funkcji set_a ().
- Wywołaj funkcję main (). Logikę programu należy dodać w treści tej funkcji.
- Utwórz instancję klasy ClassA i nadaj jej nazwę.
- Użyj powyższej instancji klasy i funkcji set_a (), aby przypisać wartość 20 do zmiennej a.
- Drukowanie tekstu obok wartości zmiennej a na konsoli. Wartość zmiennej a uzyskuje się poprzez wywołanie funkcji get_a ().
- Program musi zwrócić wartość po pomyślnym zakończeniu.
- Koniec treści funkcji main ().
Przykład 3:
#includeusing namespace std;class ParentClass {protected:int value;};class ChildClass : public ParentClass {public:void setId(int x) {value = x;}void displayValue() {cout << "Value is: " << value << endl;}};int main() {ChildClass c;c.setId(21);c.displayValue();return 0;}
Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego kodu, aby móc korzystać z jego funkcji.
- Uwzględnij przestrzeń nazw std w naszym kodzie, aby używać jej klas bez wywoływania jej.
- Utwórz klasę o nazwie ParentClass.
- Użyj modyfikatora dostępu chronionego, aby oznaczyć element członkowski klasy, który ma zostać utworzony, jako chroniony.
- Utwórz zmienną całkowitą o nazwie value.
- Koniec treści klasy.
- Utwórz nową klasę o nazwie ChildClass, która dziedziczy ParentClass.
- Użyj modyfikatora dostępu chronionego, aby oznaczyć element członkowski klasy, który ma zostać utworzony, jako dostępny dla klas podrzędnych.
- Utwórz funkcję o nazwie setId (), która przyjmuje jedną wartość całkowitą x.
- Przypisanie wartości zmiennej x do wartości zmiennej.
- Koniec definicji funkcji setId ().
- Utwórz funkcję o nazwie displayValue ().
- Wydrukuj wartość zmiennej o nazwie value na konsoli razem z innym tekstem.
- Koniec treści funkcji displayValue ().
- Koniec treści klasy o nazwie ChildClass.
- Wywołaj funkcję main (). Logikę programu należy dodać w treści tej funkcji.
- Utwórz wystąpienie ChildClass i nadaj mu nazwę c.
- Użyj powyższej instancji klasy i funkcji setId (), aby przypisać wartość 21 do zmiennej x.
- Użyj powyższej instancji klasy, aby wywołać funkcję o nazwie displayValue ().
- Program musi zwrócić wartość po pomyślnym zakończeniu.
- Koniec treści funkcji main ().
Funkcje składowe klasy
Funkcje pomagają nam manipulować danymi. Funkcje składowe klasy można zdefiniować na dwa sposoby:
- W definicji klasy
- Poza definicją klasy
Jeśli funkcja ma być zdefiniowana poza definicją klasy, musimy użyć operatora rozpoznawania zasięgu (: :). Powinny temu towarzyszyć nazwy klas i funkcji.
Przykład 2:
#include#include using namespace std;class Guru99{public:string tutorial_name;int id;void printname();void printid(){cout << "Tutorial id is: "<< id;}};void Guru99::printname(){cout << "Tutorial name is: " << tutorial_name;}int main() {Guru99 guru99;guru99.tutorial_name = "C++";guru99.id = 1001;guru99.printname();cout << endl;guru99.printid();return 0;}
Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream do naszego programu, aby móc korzystać z jego funkcji.
- Dołącz plik nagłówkowy ciągu do naszego programu, aby móc korzystać z jego funkcji.
- Uwzględnij przestrzeń nazw std w naszym kodzie, aby używać jej klas bez wywoływania jej.
- Utwórz klasę o nazwie Guru99.
- Użyj modyfikatora dostępu publicznego, aby oznaczyć członków klasy, które zamierzamy utworzyć, jako publicznie dostępnych.
- Utwórz zmienną łańcuchową o nazwie tutorial_name.
- Utwórz zmienną całkowitą o nazwie id.
- Utwórz funkcję o nazwie printname (). Ta funkcja nie jest zdefiniowana w definicji klasy.
- Utwórz funkcję o nazwie print (). Ta funkcja jest zdefiniowana w definicji klasy. Jego treść została dodana w definicji klasy.
- Wydrukuj wartość zmiennej id obok innego tekstu na konsoli. Zauważ, że zostało to dodane w treści funkcji printid (). Zostanie wykonane tylko wtedy, gdy zostanie wywołana funkcja printid ().
- Koniec treści funkcji printid ().
- Koniec treści klasy Guru99.
- Początek definicji funkcji printname ().
- Wydrukuj wartość zmiennej tutorial_name na konsoli razem z innym tekstem. Zauważ, że zostało to dodane w treści funkcji printname (). Zostanie wykonane tylko wtedy, gdy zostanie wywołana funkcja printname ().
- Koniec definicji funkcji printname ().
- Wywołaj funkcję main (). Logikę programu należy dodać w treści tej funkcji.
- Utwórz instancję klasy Guru99 i nadaj jej nazwę guru99.
- Użyj powyższego wystąpienia, aby przypisać wartość C ++ do zmiennej tutorial_name.
- Użyj instancji guru99, aby przypisać wartość 1001 do zmiennej id.
- Użyj instancji guru99, aby wywołać funkcję printname ().
- Wywołaj polecenie end (end line), aby wydrukować nowy pusty wiersz na konsoli.
- Użyj instancji guru99, aby wywołać funkcję printid ().
- Program musi zwrócić wartość po pomyślnym zakończeniu.
- Koniec treści funkcji main ().
Konstruktorzy i niszczyciele
Co to są konstruktorzy?
Konstrukcje to specjalne funkcje, które inicjalizują obiekty. Kompilatory C ++ wywołują konstruktor podczas tworzenia obiektu. Konstruktory pomagają przypisywać wartości członkom klasy. Oczywiście dzieje się tak po przydzieleniu im miejsca w pamięci.
Co to są destruktory?
Z drugiej strony niszczyciele pomagają niszczyć obiekty klasowe.
Nazwa konstruktora musi być podobna do nazwy klasy. Konstruktory nie mają typu zwracanego.
Konstruktor można zdefiniować wewnątrz lub na zewnątrz treści klasy. Jeśli jest zdefiniowany poza treścią klasy, powinien być zdefiniowany za pomocą nazwy klasy i operatora rozpoznawania zakresu (: :).
Przykład 3:
#includeusing namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"< Wynik:
Oto zrzut ekranu kodu:
Objaśnienie kodu:
- Dołącz plik nagłówkowy iostream do kodu, aby używać jego funkcji.
- Uwzględnij przestrzeń nazw std w naszym kodzie, aby używać jej klas bez wywoływania jej.
- Utwórz klasę o nazwie ClassA.
- Użyj modyfikatora dostępu publicznego, aby oznaczyć członka, który zamierzamy utworzyć, jako publicznie dostępny.
- Utwórz konstruktora dla klasy.
- Tekst do wydrukowania na konsoli po wywołaniu konstruktora. Endl to słowo kluczowe C ++, które oznacza linię końcową. Przenosi kursor myszy do następnej linii.
- Koniec treści konstruktora klasy.
- Utwórz destruktor dla klasy.
- Tekst do wydrukowania na konsoli po wywołaniu destruktora. Endl to słowo kluczowe C ++, które oznacza linię końcową. Przenosi kursor myszy do następnej linii.
- Koniec ciała destruktora.
- Koniec treści klasy.
- Wywołaj funkcję main (). Logikę programu należy dodać w treści tej funkcji.
- Utwórz obiekt klasy i nadaj mu nazwę. Zostanie wywołany konstruktor.
- Utwórz zmienną całkowitą o nazwie p i przypisz jej wartość 1.
- Utwórz blok instrukcji if za pomocą zmiennej p.
- Utwórz obiekt klasy i nadaj mu nazwę b. Zostanie wywołany destruktor.
- Koniec treści instrukcji if.
- Koniec treści funkcji main ().
Podsumowanie:
- C ++ jest zorientowany obiektowo.
- Klasy to główne cechy C ++, które sprawiają, że jest on zorientowany obiektowo.
- Klasa C ++ łączy dane i metody manipulowania danymi w jedno.
- Klasa to plan obiektu.
- Klasy określają formę przedmiotu.
- Dane i metody zawarte w klasie są nazywane elementami członkowskimi klasy.
- Aby uzyskać dostęp do członków klasy, należy użyć wystąpienia tej klasy.
- Aby utworzyć klasę, używamy słowa kluczowego class.
- Funkcje składowe klasy można definiować wewnątrz lub na zewnątrz klasy.