Copy Constructor Trong C++
Có thể bạn quan tâm
Copy constructor là một constructor mà tạo một đối tượng bằng việc khởi tạo nó với một đối tượng của cùng lớp đó, mà đã được tạo trước đó. Copy constructor được sử dụng để:
Khởi tạo một đối tượng từ đối tượng khác với cùng kiểu.
Sao chép một đối tượng để truyền nó như là một tham số tới một hàm.
Sao chép một đối tượng để trả về nó từ một hàm.
Nếu một copy constructor không được định nghĩa trong một lớp, compiler sẽ tự nó định nghĩa một copy constructor. Nếu lớp có các biến con trỏ và có một số cấp phát bộ nhớ động, thì nó là một sự cần thiết để có một copy constructor. Form phổ biến nhất của copy constructor trong C++ là:
ten_lop (const ten_lop &obj) { // phan than cua constructor }Ở đây, obj là một tham chiếu tới một đối tượng mà đang được sử dụng để khởi tạo đối tượng khác.
#include <iostream> using namespace std; class Line { public: int layChieuDai( void ); Line( int dai ); // Day la mot constructor don gian Line( const Line &obj); // Day la copy constructor ~Line(); // Day la destructor private: int *contro; }; // Phan dinh nghia cac ham thanh vien, bao gom constructor, copy constructor, destructor Line::Line(int dai) { cout << "Constructor: cap phat bo nho cho con tro contro" << endl; // cap phat bo nho cho con tro contro = new int; *contro = dai; } Line::Line(const Line &obj) { cout << "Copy constructor: cap phat bo nho cho con tro contro" << endl; contro = new int; *contro = *obj.contro; // sao chep gia tri } Line::~Line(void) { cout << "Giai phong bo nho!" << endl; delete contro; } int Line::layChieuDai( void ) { return *contro; } void hienThi(Line obj) { cout << "Chieu dai cua line la: " << obj.layChieuDai() <<endl; } // ham main cua chuong trinh int main( ) { Line line(50); hienThi(line); return 0; }Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:
Bạn theo dõi cùng ví dụ trên những với một sự thay đổi nhỏ để tạo đối tượng khác bởi sử dụng đối tượng đã tồn tại với cùng kiểu.
#include <iostream> using namespace std; class Line { public: int layChieuDai( void ); Line( int dai ); // Day la mot constructor don gian Line( const Line &obj); // Day la copy constructor ~Line(); // Day la destructor private: int *contro; }; // Phan dinh nghia cac ham thanh vien, bao gom constructor, copy constructor, destructor Line::Line(int dai) { cout << "Constructor: cap phat bo nho cho con tro contro" << endl; // cap phat bo nho cho con tro contro = new int; *contro = dai; } Line::Line(const Line &obj) { cout << "Copy constructor: cap phat bo nho cho con tro contro" << endl; contro = new int; *contro = *obj.contro; // sao chep gia tri } Line::~Line(void) { cout << "Giai phong bo nho!" << endl; delete contro; } int Line::layChieuDai( void ) { return *contro; } void hienThi(Line obj) { cout << "Chieu dai cua line la: " << obj.layChieuDai() <<endl; } // Ham main cua chuong trinh int main( ) { Line line1(45); Line line2 = line1; // Lenh nay cung goi copy constructor hienThi(line1); hienThi(line2); return 0; }Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:
Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack
Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Bài học C++ phổ biến khác tại vietjack.com:
- Cú pháp C++ cơ bản
- Các kiểu Modifier trong C++
- Toán tử trong C++
- Vòng lặp trong C++
- Lệnh IF, Else, Switch trong C++
- Mảng (Array) trong C++
- Chuỗi (String) trong C++
- Con trỏ trong C++
- Date & Time trong C++
160 bài học ngữ pháp tiếng Anh hay nhất
155 bài học Java tiếng Việt hay nhất
100 bài học Android tiếng Việt hay nhất
247 bài học CSS tiếng Việt hay nhất
197 thẻ HTML cơ bản
297 bài học PHP
101 bài học C++ hay nhất
97 bài tập C++ có giải hay nhất
208 bài học Javascript có giải hay nhất
Từ khóa » Hàm Copy Constructor Trong C++
-
Copy Constructor Trong C++
-
Hàm Xây Dựng Sao Chép (Copy Constructor) Trong C++ - Freetuts
-
Sao Chép Hàm Tạo Trong C ++ - TutorialCup
-
5.3.10 Hàm Khởi Tạo Sao Chép (Copying Constructors) - CppDeveloper
-
Hàm Khởi Tạo (constructor) Trong C++
-
Copy Constructor Trong C++ - Hoclaptrinh
-
Constructor Trong C++ - Techacademy
-
Constructor, Destructor Và Copy Constructor Trong Hướng đối Tượng ...
-
Copy Constructor Là Gì?
-
Copy Constructor Trong C++ - Vay Tiền Online Bằng CMND
-
[Tự Học C++] Constructors - Hàm Khởi Tạo Trong C++ »
-
Hàm Tạo Sao Chép (copy Constructor) - VOER
-
Hàm Khởi Tạo Và Hàm Huỷ - Lập Trình Không Khó
-
Hàm Tạo Sao Chép (copy Constructor) - Tài Liệu Text - 123doc