Jak zaimplementować konstruktor kopiowania w C ++?



Zrozumienie konstruktorów było dla wielu zagadką. Ten artykuł pomoże Ci zdemistyfikować koncepcję Copy Constructor w C ++

Zrozumienie Konstruktorzy dla wielu było zagadką. Ten artykuł pomoże Ci zdemistyfikować koncepcję Copy Constructor w C ++. Poniższe wskazówki zostaną omówione w tym artykule,

Więc zacznijmyz tym artykułem na temat Copy Constructor w C ++





Copy Constructor to konstruktor, który inicjuje obiekt klasy przy użyciu innego obiektu tej samej klasy.

Składnia:



Mamy słowo kluczowe const, ponieważ chcemy, aby wartość stała się stała i upewnić się, że nie zostanie ona zmodyfikowana gdzieś w kodzie. Podobnie jak domyślny konstruktor, kompilator zapewnia również konstruktor kopiujący. Nazywa się to domyślnym konstruktorem kopiowania. Konstruktory kopiujące można ustawić jako prywatne. Nie możemy kopiować obiektów tej klasy, gdy ustawiamy konstruktor kopiujący jako prywatny.

Oto przykładowy kod :

#include using namespace std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Tutaj wywoływany jest konstruktor normalny test t2 = t1 // Tutaj wywoływany jest konstruktor kopiujący cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Wynik:



typecast double na int java

Konstruktor kopii wyjściowych w C ++ - Edureka

Wyjaśnienie

Powyższy program to podstawowe demo konstruktora kopiującego. Mamy test klasy z prywatnym składnikiem danych typu int o nazwie x. Następnie mamy sparametryzowany konstruktor, który przypisuje 7 do zmiennych x. Mamy konstruktora kopiującego, który tworzy instancję wartości t2 z wartością t1. Wysyłany jest adres t2, który zawiera wartość t1 i jest przypisany do x. Istnieje funkcja get, która zwraca wartość x.

Główna funkcja ma obiekt testu klasy o nazwie t1. Z tym obiektem jest skojarzona wartość, to jest parametr. Funkcja główna ma inny obiekt testu klasy o nazwie t2. Jest to inicjowane za pomocą zmiennej t1 i wywoływany jest tutaj konstruktor kopiujący. Na koniec wywoływana jest funkcja get w odniesieniu do t1 i t2, aby uzyskać wartość x.

Rodzaje

Istnieją dwa typy konstruktora kopiującego.
⦁ Shallow Copy Constructor
⦁ Deep Copy Constructor

Przechodząc dalej do tego artykułu o konstruktorze kopiowania w C ++

Konstruktor płytkiej kopii:

Konstruktor płytkiej kopii jest domyślnym konstruktorem kopiowania.

Przykład:

Dwie osoby uzyskują dostęp do bazy danych w tym samym czasie i dokonują zmian wartości w dwóch różnych systemach. Jeśli wprowadzą zmiany w bazie danych, obie te zmiany zostaną pokazane w bazie danych. Oba obiekty będą wskazywać to samo miejsce w pamięci. To jest konstruktor płytkiej kopii. Dzieje się tak głównie, gdy pracujemy z domyślnym konstruktorem kopiującym. Oto przykładowy kod dla: Konstruktor płytkiej kopii:

przekonwertować na binarny w Pythonie
#include using namespace std class test {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Wynik:

Wyjaśnienie:

W powyższym kodzie używamy domyślnego konstruktora kopiującego dostarczonego przez kompilator. Dlatego jest to konstruktor płytkiej kopii.

Przechodząc dalej do tego artykułu o konstruktorze kopiowania w C ++

Konstruktor głębokiej kopii

Deep Copy Constructor to konstruktor kopiujący zdefiniowany przez użytkownika.
Na przykład:
Kiedy dwie osoby muszą dokonać prezentacji i obie kopiują z tego samego źródła, kopie są oddzielne. Tak więc, gdy dokonujesz modyfikacji, tylko druga kopia nie zostanie naruszona. To jest konstruktor Deep Copy. Oba obiekty będą wskazywać różne miejsca w pamięci, a zmiany w jednym nie będą miały żadnego wpływu na drugie. Pamięć jest przydzielana dynamicznie.

Oto przykładowy kod dla: Konstruktor głębokich kopii:

#include using namespace std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Tutaj wywoływany jest konstruktor normalny test t2 = t1 // Tutaj wywoływany jest konstruktor kopiujący cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Wynik:

co to jest ide w java

Wyjaśnienie

To jest ten sam kod, którego użyliśmy powyżej, dający podobne wyniki. Jest to konstruktor kopii zdefiniowany przez użytkownika, a zatem jest konstruktorem głębokiego kopiowania.

W ten sposób dotarliśmy do końca artykułu „Kopiuj konstruktor w C ++”. Jeśli chcesz dowiedzieć się więcej, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online. Szkolenie i certyfikacja J2EE i SOA firmy Edureka ma na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.