Copy Constructor Trong C++

Copy constructor trong C++ Trang trước Trang sau

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:

Copy Constructor trong C++ Quảng cáo

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:

Copy Constructor trong C++ 👉 Giải bài nhanh với AI Hay:

Đã 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++
Trang trước Trang sau lop_va_doi_tuong_trong_cplusplus.jsp Bài viết liên quan
  • 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++