Konstruktory klas C++

C Class Constructors



Konstruktory są jak funkcje. Służą one do inicjalizacji wartości i obiektów klasy. Te konstruktory są inicjowane podczas tworzenia obiektu klasy. Konstruktor bezpośrednio nie zwraca żadnej wartości. Aby uzyskać wartość konstruktora, musimy opisać osobną funkcję, ponieważ konstruktor nie ma żadnego zwracanego typu. Konstruktor różni się od prostej funkcji na różne sposoby. Konstruktor jest tworzony podczas generowania obiektu. Jest zdefiniowany w publicznym segmencie klasy.

W tym artykule rozważymy wszystkie tego typu konstruktory na przykładach.







Przykład 1

To jest ilustracja domyślnego konstruktora. Jak wiemy, konstruktory domyślnie tworzone są automatycznie, gdy tworzymy obiekt klasy. Nazywa się to tworzeniem niejawnym. Konstruktory mają taką samą nazwę, jak nazwa klasy. Rozważmy plik z kodem c++ konstruktora, ponieważ wiemy, że klasa ma dwie opcje, prywatną i publiczną. Część prywatna zawiera zmienne danych, natomiast część publiczna dotyczy funkcji pobieranych przez dowolny obiekt. Konstruktor jest więc również zdefiniowany w części publicznej.



Liczba całkowita()

{

x=pięćdziesiąt;

oraz=20;

};

W tym konstruktorze do zmiennych przypisywane są wartości. Jeśli chcemy pobrać wartości jako dane wyjściowe, musimy je wydrukować w programie głównym.







Po zdefiniowaniu konstruktora klasa jest zamykana. Wchodząc do programu głównego, wydrukujemy wartości za pomocą obiektu. Obiekt zawsze uzyskuje dostęp do konstruktorów, ponieważ są to części klasy. Tworzenie obiektów jest takie proste. Odbywa się to poprzez wprowadzenie go z nazwą klasy. W tym przykładzie jest to liczba całkowita. Wartość zostanie pobrana metodą kropkową. tj. ax.

Możemy zobaczyć wyjście kodu źródłowego z terminala w Ubuntu. Podejście stosowane do uzyskania danych wyjściowych jest dość łatwe. Najpierw kod jest kompilowany, a następnie wykonywany. Do procesu kompilacji używamy kompilatora G++. Podobnie jak w przypadku C, używamy GCC.



$ G++ -lub filec.C

./filec

-O służy do zapisywania danych wyjściowych w pliku.

Przykład 2

Na tej ilustracji wyjaśnimy parametry konstruktorów. W przeciwieństwie do poprzedniego przykładu, możemy również przekazać argumenty do konstruktorów z programu głównego. Gdy obiekt jest generowany, wartości te są automatycznie przekazywane do zmiennych obecnych w konstruktorze, aby otrzymać wartość. Niektóre zastosowania sparametryzowanych konstruktorów to.

  • Służy do inicjowania różnych zmiennych o różnych wartościach wewnątrz konstruktorów podczas inicjowania.
  • Służy do przeciążania konstruktorów. Zostało to określone w dalszej części artykułu.

Rozważmy teraz ilustrację, którą opisaliśmy, aby rozwinąć tę koncepcję. Klasa ma nazwę integer, więc na pewno nazwa konstruktora też będzie taka sama. W parametrach konstruktora znajdują się dwie wartości typu integer. Są one inicjowane, aby akceptować wartości wysyłane z programu głównego jako wywołanie funkcji.

Liczba całkowita( intx,intoraz)

{

DO=x;

b=oraz;

};

W poprzednim przykładzie zmienne wewnątrz konstruktora otrzymały wartości. Natomiast w tym konstruktorze zmiennym przypisuje się zmienne posiadające wartość.

Jeśli chcemy wziąć wyświetlanie, musimy zdefiniować funkcję, która zwróci wartość, ponieważ nie jest możliwy dostęp do tej zainicjowanej zmiennej bezpośrednio z konstruktora.

intweź X()

{

powrótdo;

};

Teraz zobaczymy główną część programu. Tutaj, gdy obiekt jest tworzony, możesz zobaczyć wartości w sekcji parametrów.

Liczba całkowita v(70,55); {domniemany}

liczba całkowita v=liczba całkowita(10,piętnaście); {wyraźny}

Aby wyświetlić wynik, wywołamy funkcje utworzone wewnątrz klasy za pomocą obiektu. tj. v.getx().

Metoda pobierania rekordów jest taka sama, jak wprowadzona wcześniej.

Przykład 3

Ten przykład dotyczy kopiowania konstruktora klasy. Skopiowany konstruktor służy do inicjalizacji obiektu innym obiektem podobnej klasy, do której należy. Ten konstruktor kopiuje dane znajdujące się w jednym obiekcie do drugiego. Parametry tego konstruktora zawierają adres obiektu klasy. Rozważ podane przykłady, w których wprowadziliśmy dwie zmienne tego samego typu danych, aby można było do nich uzyskać dostęp za pomocą dowolnej funkcji wewnątrz klasy. Konstruktor otrzyma wartości poprzez zmienną. Jednocześnie skopiowany konstruktor otrzyma tylko obiekt. Za pomocą tego obiektu zostaną pobrane wartości.

Ściana(Ściana&obiekt)

{

Długość=obj.długość;

Wzrost=obj.wzrost;

}

Musimy obliczyć powierzchnię, więc funkcja do tego obliczenia jest tutaj zdefiniowana. Spowoduje to zwrócenie wartości do funkcji main po jej wywołaniu. Teraz przyjrzymy się głównemu programowi kodu

Wywołanie funkcji skopiowanego konstruktora będzie takie.

Ściana ściana2=ściana1;

Obiekt wywołuje skopiowany konstruktor, a dane przez pierwszy obiekt są przez niego kopiowane. Ponadto wywołamy funkcję do obliczania powierzchni przez oba obiekty.

Z danych wyjściowych możesz zobaczyć, że wynik obu konstruktorów jest taki sam. Oznacza to, że wszystkie dane zostały pomyślnie skopiowane przez obiekt.

Przykład 4

To jest ilustracja przeciążenia konstruktora. Dzieje się tak, gdy musimy użyć więcej niż jednej funkcji w klasie. Przeciążanie konstruktorów następuje zgodnie z instrukcjami sparametryzowanych konstruktorów. Wszystkie konstruktory w klasie mają podobną nazwę jak klasa. Ale każdemu z konstruktorów przypisane są inne parametry. Każdy konstruktor jest wywoływany zgodnie z argumentem podczas tworzenia obiektu.

Rozważmy podany przykład, w którym użyliśmy trzech konstruktorów. Jeden jest bez żadnych argumentów. Drugi jest z jednym argumentem, a trzeci z dwoma argumentami. Ta ilustracja jest podobna do poprzedniej. Ponieważ obliczamy powierzchnię w oddzielnej funkcji opisanej wewnątrz klasy.

// Konstruktor z dwoma argumentami

kształt(intx,intoraz)

{

do=x;

b=oraz;

};

Teraz idąc w kierunku głównego programu widzimy, że kiedy inicjujemy obiekt klasy, domyślnie wywoływany jest konstruktor bez argumentu. Teraz musimy wywołać inne konstruktory z różnymi obiektami o różnych argumentach.

Kształt s;

Kształt s2(8);

Kształt s3(4,2);

Funkcja, za pomocą której możemy wyświetlić wartość, jest wywoływana przez ten sam utworzony obiekt.

Aby wyświetlić dane wyjściowe, użyjemy tej samej metody terminala poleceń, kompilując i wykonując kod znajdujący się w pliku.

Z wyników możemy zobaczyć, że odpowiedź jest taka sama dla każdego konstruktora.

Wniosek

W tym samouczku poznaliśmy podstawy konstruktorów i ich funkcjonalności, w tym sposoby ich przeciążania. Konstruktory służą do inicjowania zmiennych wartościami.