Wprowadzenie do Copy Constructor w C ++

Języki programowania zapewniają nam różne funkcje, które można wykorzystać do opracowania aplikacji. W przypadku języków średniego poziomu funkcje mogą być mniejsze w porównaniu z językami wyższego poziomu, ale wszelkie oferowane opcje są wystarczające do opracowania znaczących aplikacji. W tej sekcji dowiemy się o kopiowaniu konstruktorów. Konstruktor można zdefiniować jako funkcję specjalną o takiej samej nazwie jak nazwa klasy, w której została zdefiniowana. Konstruktor jest wywoływany automatycznie po zainicjowaniu obiektu tej klasy. Można powiedzieć, że inicjowanie obiektu, jeśli klasa niejawnie wywołuje konstruktor. Jeśli konstruktor jest przeciążony, to w takim przypadku wartości należy przekazać razem z obiektem podczas jego inicjalizacji. Tutaj konstruktor, którego będziemy się uczyć, jest bardzo unikalny i znany jako copy Constructor. Ten konstruktor działa przy użyciu innych obiektów niż normalnych wartości.

Jak działa Copy Constructor w C ++?

Konstruktor kopii można zdefiniować jako specjalny typ konstruktora, który służy do deklarowania obiektu i inicjowania go za pomocą innych obiektów. Normalny konstruktor wywoływany podczas inicjalizacji obiektu tej klasy. Jeśli konstruktor jest przeciążony kilkoma parametrami, wówczas inicjalizacja obiektu i przekazanie tej samej liczby argumentów wywoła parametr przeciążenia. Ponieważ konstruktor kopii jest przeciążony, można go wywołać, gdy obiekt jest inicjowany za pomocą argumentu, a argument musi przekazać wartość obiektu zamiast jakiejkolwiek wartości normalnej.

Gdy wartość otrzymana przez parametr przeciążonego konstruktora zostanie znaleziona obiekt, konstruktor kopiowania zostanie wywołany i zestaw instrukcji zdefiniowanych w konstruktorze kopiowania rozpocznie wykonywanie. Przed użyciem konstruktora kopiowania musimy utworzyć obiekt tej samej klasy. Wyraźnie stwierdza podejście, że każdy program, który ma zaimplementować konstruktor kopii, powinien również mieć domyślny lub sparametryzowany konstruktor, aby można było utworzyć obiekt, który pomoże w zaangażowaniu konstruktora kopii.

Ogólny scenariusz można uznać za wykorzystanie jednego obiektu w celu utworzenia innego obiektu. Wszystkie wartości powiązane z obiektem używanym do inicjowania obiektu przez konstruktor kopiowania są przydzielane do nowo zainicjowanego obiektu. Oznacza to, że jeśli wartość dowolnej zmiennej zostanie użyta przez pierwszy obiekt, ta sama zmienna może zostać użyta przez obiekt zainicjowany przez konstruktor kopii. Funkcja konstruktora kopii jest uważana za bardzo ważną i sprawia, że ​​programowanie jest bardzo wygodne dla niektórych aplikacji. Jego funkcje korzystania z odwołania do obiektu tej samej klasy pomagają w tworzeniu aplikacji spełniającej wymagania, które można spełnić tylko przy użyciu konstruktora kopiowania. Chociaż nie jest wykorzystywany tak często, jak domyślny lub sparametryzowany konstruktor, jest wystarczającą mocą, aby przyczynić się do dodania nowej funkcjonalności do aplikacji.

Przykład

Przyjrzyjmy się konstruktorowi kopii na przykładzie. Tutaj będziemy pracować nad prostym przykładem, który pokaże ci, jak działa konstruktor kopiowania i jak może uzyskać dostęp do wartości, które były powiązane z obiektem, za pomocą którego nowy obiekt jest tworzony przez konstruktor kopii. Poniższa ilustracja pokazuje, jak różni się wywoływanie konstruktora kopiowania w porównaniu do wywoływania normalnego przeciążonego konstruktora.

Program

#include
using namespace std;
class Check
(
public:
int val;
Check(int a)
(
val=a;
)
Check(Check &i)
(
val = i.val;
)
);
int main()
(
int add_val;
Check a1(50);
Check a2(a1);
add_val = a2.val + 10;
cout< )
#include
using namespace std;
class Check
(
public:
int val;
Check(int a)
(
val=a;
)
Check(Check &i)
(
val = i.val;
)
);
int main()
(
int add_val;
Check a1(50);
Check a2(a1);
add_val = a2.val + 10;
cout< )

W tym programie wywołaliśmy sparametryzowany konstruktor, omijając argument przez a1. Przekazana wartość jest liczbą całkowitą, ponieważ sparametryzowany konstruktor został zdefiniowany tak, aby akceptował tylko liczbę całkowitą. Gdy wartość 50 jest przekazywana do konstruktora, wartość ta jest przypisywana do zmiennej o nazwie var. Następnie obiekt a1 został przekazany do konstruktora kopiowania przez a2. Po otrzymaniu odwołania do obiektu przez konstruktor kopiujący wiąże wartość przypisaną pierwszemu obiektowi z nowo utworzonym obiektem. To prosty przykład wyjaśniający konstruktor kopii. Można go użyć w kilku innych programach, aby uzyskać różne funkcje w aplikacji.

Wynik:

60

Reguły i przepisy dotyczące konstruktora kopii w C ++

Konstruktor kopiowania jest uważany za nieco inny niż domyślny lub sparametryzowany konstruktor. Z jednej strony, gdzie normalny konstruktor działa z wykorzystaniem wartości wspólnego typu danych, z drugiej strony kopiowanie konstruktora działa z wykorzystaniem wcześniej utworzonego obiektu tej samej klasy. Podczas korzystania z konstruktora kopiowania należy upewnić się, że parametry przekazywane przez konstruktor kopiowania powinny być używane razem ze znakiem ampersand (&), ponieważ jest to znak specjalny używany do przechowywania odwołania do obiektu. Jeśli ampersand nie jest używany podczas implementacji konstruktora kopiowania, nie będzie już konstruktorem kopiowania, ale zostanie automatycznie uznany za konstruktora sparametryzowanego.

Jeśli chodzi o wywoływanie konstruktora kopiowania, musimy upewnić się, że wartość przekazywana jako argument powinna zawierać odniesienie do obiektu, a nie jakąkolwiek wartość należącą do wspólnego typu danych. Oto kilka rzeczy, które należy bardzo uważnie rozważyć podczas implementacji konstruktora kopiowania w języku programowania C ++. Ponadto za każdym razem, gdy korzystamy z konstruktora kopiowania, musimy upewnić się, że odpowiednio go odróżniamy od sparametryzowanego konstruktora, ponieważ w przeciwnym razie całkowicie zmieni to funkcjonalność programu i doprowadzi do nieprawidłowego generowania danych wyjściowych.

Wniosek

Konstruktor kopiowania jest uważany za specjalny rodzaj konstruktora, który działa przy użyciu odwołania do obiektu tej samej klasy. Służy do wprowadzenia kilku funkcjonalności w aplikacji. W porównaniu z domyślnym konstruktorem konstruktor kopiowania nie jest często używany w prostych programach, ale jeśli chodzi o tworzenie złożonych aplikacji, które muszą być wdrażane w środowisku produkcyjnym, konstruktor kopiowania jest tam używany, a także tworzenie aplikacji jest bardzo wygodne .

Polecane artykuły

To jest przewodnik po Copy Constructors w C ++. Tutaj omawiamy wprowadzenie i sposób działania Copy Constructor w C ++ wraz z Regułami i Przepisami dotyczącymi Copy Constructor w C ++. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej -

  1. Kopiuj konstruktora w Javie
  2. Kopiuj konstruktora w C #
  3. Konstruktor w C ++
  4. Zastosowanie Konstruktora w C.
  5. Typy konstruktorów w C # z implementacją kodu