C ++ Constructors: Các loại và Copy Constructors

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về hàm tạo C ++ và kiểu của nó với các ví dụ trợ giúp.

Hàm tạo là một loại hàm thành viên đặc biệt được gọi tự động khi một đối tượng được tạo.

Trong C ++, một hàm tạo có cùng tên với tên của lớp và nó không có kiểu trả về. Ví dụ,

 class Wall ( public: // create a constructor Wall() ( // code ) );

Ở đây, hàm Wall()là một phương thức khởi tạo của lớp Wall. Lưu ý rằng hàm tạo

  • có cùng tên với lớp,
  • không có kiểu trả lại, và
  • public

Khối mã lệnh mặc định của C ++

Một hàm tạo không có tham số được gọi là một hàm tạo mặc định . Trong ví dụ trên, Wall()là một hàm tạo mặc định.

Ví dụ 1: Khối mã lệnh mặc định của C ++

 // C++ program to demonstrate the use of default constructor #include using namespace std; // declare a class class Wall ( private: double length; public: // create a constructor Wall() ( // initialize private variables length = 5.5; cout << "Creating a wall." << endl; cout << "Length = " << length << endl; ) ); int main() ( // create an object Wall wall1; return 0; )

Đầu ra:

 Tạo chiều dài tường = 5,5

Ở đây, khi đối tượng wall1 được tạo, hàm Wall()tạo được gọi. Điều này đặt biến độ dài của đối tượng thành 5.5.

Lưu ý: Nếu chúng ta chưa xác định một hàm tạo trong lớp của mình, thì trình biên dịch C ++ sẽ tự động tạo một hàm tạo mặc định với mã trống và không có tham số.

C ++ hàm tạo tham số

Trong C ++, một phương thức khởi tạo với các tham số được gọi là một phương thức khởi tạo tham số hóa. Đây là phương pháp ưa thích để khởi tạo dữ liệu thành viên.

Ví dụ 2: C ++ Parameterized Constructor

 // C++ program to calculate the area of a wall #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // create parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) double calculateArea() ( return length * height; ) ); int main() ( // create object and initialize data members Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); cout << "Area of Wall 1: " << wall1.calculateArea() << endl; cout << "Area of Wall 2: " << wall2.calculateArea() << endl; return 0; )

Đầu ra:

 Diện tích Tường 1: 90.3 Diện tích Tường 2: 53.55

Ở đây, chúng ta đã tạo một phương thức khởi tạo tham số hóa Wall()có 2 tham số: double lendouble hgt. Các giá trị chứa trong các tham số này được sử dụng để khởi tạo chiều dài và chiều cao của các biến thành viên.

Khi chúng ta tạo một đối tượng của Roomlớp, chúng ta chuyển các giá trị cho các biến thành viên làm đối số. Mã cho điều này là:

 Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3);

Với các biến thành viên được khởi tạo như vậy, bây giờ chúng ta có thể tính diện tích của bức tường với calculateArea()hàm.

C ++ Copy Constructor

Hàm tạo sao chép trong C ++ được sử dụng để sao chép dữ liệu của đối tượng này sang đối tượng khác.

Ví dụ 3: C ++ Copy Constructor

 #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) // copy constructor with a Wall object as parameter Wall(Wall &obj) ( // initialize private variables length = obj.length; height = obj.height; ) double calculateArea() ( return length * height; ) ); int main() ( // create an object of Wall class Wall wall1(10.5, 8.6); // print area of wall1 cout << "Area of Room 1: " << wall1.calculateArea() << endl; // copy contents of room1 to another object room2 Wall wall2 = wall1; // print area of wall2 cout << "Area of Room 2: " << wall2.calculateArea() << endl; return 0; )

Đầu ra

 Diện tích phòng 1: 90,3 Diện tích phòng 2: 90,3

Trong chương trình này, chúng ta đã sử dụng một hàm tạo sao chép để sao chép nội dung của một đối tượng của Walllớp này sang đối tượng khác. Mã của hàm tạo bản sao là:

 Room(Room &obj) ( length = obj.length; height = obj.height; )

Chú ý rằng tham số của hàm tạo này có địa chỉ của một đối tượng của Walllớp.

Sau đó chúng ta gán giá trị của các biến của đối tượng đầu tiên cho các biến tương ứng của đối tượng thứ hai. Đây là cách nội dung của đối tượng được sao chép.

Trong đó main(), chúng tôi tạo hai đối tượng wall1 và wall2 rồi sao chép nội dung của đối tượng đầu tiên sang đối tượng thứ hai bằng mã

 Wall wall2 = wall1;

Lưu ý : Một phương thức khởi tạo chủ yếu được sử dụng để khởi tạo các đối tượng. Chúng cũng được sử dụng để chạy mã mặc định khi một đối tượng được tạo.

thú vị bài viết...