salin konstruktor
Dalam C++, fungsi dengan nama yang sama dengan nama kelas dan parameter formalnya merupakan tipe referensi objek kelas ini disebut konstruktor salinan . Seperti konstruktor, sistem akan secara otomatis menghasilkannya ketika kita tidak mendefinisikannya secara aktif. melakukan penugasan sederhana yang sesuai antara dua anggota objek, yang digunakan untuk menginisialisasi objek, seperti situasi berikut:
#include<iostream>usingnamespacestd;#definePI3.1415classCircle{private:doubleR;public:Circle(doubleR);Circle(Circle&A);doublearea();doublegirth();};Circle::Circle(doubleR){cout<<Konstruktor <<endl;ini->R=R;}Lingkaran::Lingkaran(Lingkaran&A){cout<<CopyConstructor<<endl;ini->R=AR;}doubleCircle::area(){returnPI*R*R;} doubleCircle::girth(){return2*PI*R;}intmain(){CircleA(5);CircleB(A);return0;}
Dalam contoh ini, kelas Circle didefinisikan, dan konstruktor dengan parameter dan konstruktor salinan didefinisikan masing-masing. Kemudian objek A didefinisikan dalam fungsi utama, nilai awal diteruskan, dan konstruktor dengan parameter dipanggil. Dan definisikan objek B, dan inisialisasi objek B melalui objek A. Hasil yang berjalan adalah sebagai berikut:
Objek A yang didefinisikan untuk pertama kalinya memanggil konstruktor dengan parameter, dan objek B kedua diinisialisasi melalui objek A, sehingga konstruktor salinan dipanggil.
Silakan coba juga di komputer Anda.
Anda mungkin memiliki pertanyaan. Di awal kami telah menyebutkan bahwa jika kami tidak secara aktif mendefinisikan konstruktor salinan, konstruktor salinan akan dibuat secara otomatis untuk kami, jadi mengapa kami harus mendefinisikannya sendiri? Itu karena konstruktor penyalinan default hanya melakukan tugas sederhana. Dalam beberapa kasus, masalah mungkin terjadi. Ini melibatkan penyalinan dalam dan penyalinan dangkal . Kami akan memperkenalkannya kepada Anda secara mendetail di bagian berikutnya!