Co to jest przeciążanie konstruktorów w C++: cechy i typy

Opublikowany: 2021-05-24

C++ jest powszechnie używanym w branży językiem programowania obiektowego. C++ to pionierski język programowania w OOP, opracowany przez Bjarne Stroustrup w AT & T Bell Laboratories w 1979 roku . Najczęściej używaną cechą c++ może być stworzenie w nim klasy. Wewnątrz klasy możemy tworzyć elementy klasy – metody i zmienne.

Spis treści

Wstęp

Konstruktory są często używane do tworzenia obiektów lub technicznie tworzenia instancji obiektu. W większości języków programowania obiektowego są one również przeciążone. Jak w wielu językach programowania, nazwa konstruktora jest z góry określona na podstawie nazwy klasy. Ogranicza to nazwane obiekty, ponieważ może istnieć jeden konstruktor. W scenariuszu, w którym wymaganych jest wiele konstruktorów, są one implementowane przy użyciu funkcji przeciążania.

W C++ domyślne konstruktory są bez parametrów. Są tworzone z elementów członkowskich obiektu z odpowiednimi wartościami domyślnymi.

Możesz mieć dobry pomysł na przeciążanie pojęć używanych w programowaniu zorientowanym obiektowo.

Konstruktor

Konstruktor (ctor) to technika programowania używana do tworzenia obiektu w programowaniu obiektowym opartym na klasach. Nowy obiekt jest tworzony przez wywołanie podprogramu specjalnego przeznaczenia. Jest to funkcja składowa klasy, która z kolei inicjuje obiekty klasy. Ta metoda akceptuje argumenty. Dostarczone parametry są używane przez konstruktora podstawowego i ustawiane zmienne składowe.

Charakterystyka Konstruktora

Konstruktor to specjalna funkcja składowa klasy. Różni się od ogólnej funkcji składowej z następujących powodów:

  • Członek konstruktora jest objęty zakresem publicznym
  • Ma taką samą nazwę jak deklarowanie klasy.
  • W nazwie rozróżniana jest wielkość liter
  • Konstruktory nie mają typu zwracanego.
  • Domyślny konstruktor jest tworzony niejawnie.
  • Podczas tworzenia obiektu konstruktor jest wywoływany automatycznie.
  • Konstruktor nie jest dziedziczony niejawnie.
  • Zwykle ma różne zasady dotyczące modyfikatorów zakresu.

Rodzaje konstruktorów

Konstruktory domyślne — Konstruktor o zerowych parametrach i bez argumentów. Są to niejawne konstruktory generowane przez kompilator.

Konstruktory sparametryzowane to te, przez które można przekazywać argumenty. Argumenty inicjują utworzony obiekt. Utwórz sparametryzowany konstruktor, po prostu dodając do niego parametry, podobnie jak w przypadku każdej innej funkcji. Użyj parametrów w treści konstruktora, aby zainicjować obiekt. Ten typ konstruktora jest powszechnie używany do przeciążania, a także do inicjowania różnych elementów danych obiektów o różnych wartościach początkowych.

Konstruktor kopiowania — jest to funkcja członkowska służąca do inicjowania obiektu przy użyciu innego obiektu tej samej klasy. Kompilator domyślnie tworzy konstruktor kopiujący dla każdej klasy, po wykonaniu kopii składowej między obiektami.

Konstruktor w C++

W c++ konstruktor jest wywoływany automatycznie, gdy obiekt (czyli instancja klasy) go utworzy.

Jeśli nie określimy konstruktora, kompilator c++ wygeneruje dla nas domyślny konstruktor (nie oczekuje parametrów i ma nazwę klasy).

Poprawnie napisany konstruktor pozostawia wynikowy obiekt w prawidłowym stanie.

Przeciążenie konstruktora

Przeciążanie konstruktora to zjawisko przeciążania konstruktora innego konstruktora.

Dany konstruktor może być przeciążony, podobnie jak przeciążanie funkcji.

Przeciążone konstruktory mają taką samą nazwę, jak nazwa klasy. Różni się jednak kilkoma argumentami. Podczas tworzenia obiektu typ przekazywanych argumentów określa, który konstruktor jest wywoływany.

Dostępność wielu konstruktorów o różnych parametrach ułatwia wykonywanie różnych zadań w programowaniu.

Przeciążanie konstruktorów w C++

W c++ istnieje wiele konstruktorów w klasie o tej samej nazwie, ale z inną listą argumentów. Ta koncepcja przeciążania konstruktorów w c++ jest bardzo podobna do przeciążania funkcji.

Zwykle należy utworzyć więcej niż jeden konstruktor w klasie, aby inicjować zmienne składowe w inny sposób dla obiektów. Kryterium zachowania konstruktorów w inny sposób jest posiadanie różnej liczby parametrów lub innego pozycjonowania lub różnych typów danych dla parametrów.

Konstruktory, które na stałe tworzą obiekty przy użyciu jednej klasy i zwracają nową instancję klasy, są abstrahowane przez branżę, która tworzy obiekty, ale może robić różne sposoby przy użyciu różnych klas lub różnych schematów alokacji, takich jak pule obiektów.

Jak działa przeciążanie konstruktorów w C++?

Rozważmy przykład pokazany poniżej:

Kod zilustrował przykład przeciążenia konstruktora w c++ .

Istnieją 2 konstruktory klasy „oblicz”:

  1. Konstruktor domyślny (bez żadnych parametrów)
  2. Konstruktor z trzema parametrami

A w main() tworzone są dwa obiekty.

1. out:

Po utworzeniu automatycznie wywoła domyślny konstruktor bez parametrów. Dzieje się tak, ponieważ podczas tworzenia obiektu nie jest przekazywany żaden parametr. Tak więc pasuje do definicji pierwszego (konstruktora domyślnego). To przypisze 0 wartości wszystkim trzem zmiennym dla tego obiektu klasy głównej.

2. out2:

Po utworzeniu automatycznie wywoła konstruktor z 3 parametrami. Dzieje się tak, ponieważ podczas tworzenia obiektu przekazywany jest tylko 1 parametr. Tak więc pasuje do definicji Drugiego Konstruktora. Spowoduje to przypisanie 3 wartości (przekazywanych jako parametry) do zmiennej dla tego obiektu klasy głównej.

Ucz się kursów inżynierii oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Wniosek

Zrozumienie koncepcji programistycznej przeciążania konstruktorów w c++ jest istotną umiejętnością programistów i projektantów systemów. Studenci w strumieniu programów komputerowych i związanych z komputerami mogą zwiększyć swoje umiejętności i wiarygodność techniczną, takie jak koncepcje OOP i optymalizacja kodu. Zasoby i baza wiedzy portalu upGrad zachęcają takich specjalistów do zdobywania wiedzy programistycznej, aby konkurować na rynku branżowym. Dodatkowo zyskasz możliwość poznania profesjonalnego networkingu i rozwoju umiejętności.

Jeśli chcesz dowiedzieć się więcej o tworzeniu oprogramowania z pełnym pakietem, zapoznaj się z programem Executive PG UpGrad i IIIT-B w zakresie tworzenia oprogramowania z pełnym pakietem, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznych szkoleń, ponad 9 projektów i zadania, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.

Czym są konstruktory w programowaniu?

Konstruktory w programowaniu to funkcje, których głównym celem jest inicjalizacja obiektu i wykonywanie innych prostych zadań. Konstruktory są używane do programowania obiektowego, co jest popularnym paradygmatem programowania. Program zorientowany obiektowo zawiera zatem obiekty, które z kolei mają właściwości, metody i zdarzenia. Aby utworzyć obiekt, musisz użyć konstruktora, a aby móc korzystać z obiektu, musisz utworzyć jego instancję.

Co to jest przeciążanie konstruktora?

Przeciążanie konstruktorów oznacza posiadanie więcej niż jednego konstruktora o tej samej nazwie. Konstruktory to metody wywoływane podczas tworzenia obiektu. Musisz użyć tej samej nazwy dla wszystkich konstruktorów, która jest nazwą klasy. Odbywa się to poprzez deklarację konstruktora z różną liczbą argumentów. Jeśli nie ma argumentów do przekazania, wywoływany jest konstruktor domyślny. Jeśli istnieje pojedynczy argument, wywoływany jest konstruktor, który przyjmuje pojedynczy argument. Jeśli istnieją dwa lub więcej argumentów, wywoływany jest konstruktor, który przyjmuje dokładnie dwa lub więcej argumentów.

Jak zainicjować obiekty za pomocą konstruktorów?

Konstruktorzy są kluczowi, jeśli chodzi o inicjalizację twoich klas. Są to specjalny rodzaj funkcji, który służy do tworzenia i inicjowania obiektów. Czasami nie chcemy tworzyć wszystkich pól w klasie, ponieważ nie są one potrzebne. Jeśli tworzymy wszystkie pola, powinniśmy zainicjować wszystkie pola. W tym przypadku używamy domyślnego konstruktora i inicjujemy pola tak, jak chcemy. Kiedy tworzysz klasę, możesz utworzyć jeden lub więcej konstruktorów wewnątrz klasy. Tak więc, kiedy tworzysz obiekty dla tej konkretnej klasy, możesz łatwo wywołać jej konstruktor wraz z argumentami, które chcesz ustawić. Argumenty te można ustawić jako wartości pól lub atrybutów klasy, której konstruktor jest wywoływany.