Trình tạo C++

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 khởi 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

  • has the same name as the class,
  • does not have a return type, and
  • is 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 <iostream>
using namespace std;

// declare a class
class  Wall {
  private:
    double length;

  public:
    // default constructor to initialize variable
    Wall() {
      length = 5.5;
      cout << "Creating a wall." << endl;
      cout << "Length = " << length << endl;
    }
};

int main() {
  Wall wall1;
  return 0;
}

Đầu ra

Creating a Wall
Length = 5.5

Ở đây, khi đối tượng wall1 được tạo, hàm Wall()tạo sẽ đượ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 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 được 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 <iostream>
using namespace std;

// declare a class
class Wall {
  private:
    double length;
    double height;

  public:
    // parameterized constructor to initialize variables
    Wall(double len, double hgt) {
      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();

  return 0;
}

Đầu ra

Area of Wall 1: 90.3
Area of Wall 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 lenvà double hgt. Các giá trị có 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 Wall lớ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 một đối tượng này sang một đối tượng khác.

Ví dụ 3: C ++ Copy Constructor

#include <iostream>
using namespace std;

// declare a class
class Wall {
  private:
    double length;
    double height;

  public:

    // initialize variables with parameterized constructor
    Wall(double len, double hgt) {
      length = len;
      height = hgt;
    }

    // copy constructor with a Wall object as parameter
    // copies data of the obj parameter
    Wall(Wall &obj) {
      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);

  // copy contents of wall1 to wall2
  Wall wall2 = wall1;

  // print areas of wall1 and wall2
  cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
  cout << "Area of Wall 2: " << wall2.calculateArea();

  return 0;
}

Đầu ra

Area of Wall 1: 90.3
Area of Wall 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 một đối tượng khác. Mã của hàm tạo bản sao là:

Wall(Wall &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 tôi gán giá trị của các biến của đối tượng <var> obj </var> cho các biến tương ứng của đối tượng gọi hàm tạo bản sao. Đây là cách nội dung của đối tượng được sao chép.

Sau đó main(), chúng tôi tạo hai đối tượng wall1 và wall2 , sau đó sao chép nội dung của wall1  sang wall2 :

// copy contents of wall1 to wall2
Wall wall2 = wall1;

Ở đây, đối tượng wall2 gọi hàm tạo bản sao của nó bằng cách chuyển địa chỉ của đối tượng wall1 làm đối số của nó tức là &obj = &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.









Gõ tìm kiếm nhanh...