Bài học theo mô-đun (2/2)
Hàm tạo và hàm hủy
Hàm tạo và hàm hủy là các hàm thành viên đặc biệt quản lý vòng đời của các đối tượng: việc tạo (khởi tạo) và hủy bỏ chúng (dọn dẹp tài nguyên).
nhà xây dựng
Constructor được gọi tự động khi một đối tượng của lớp được tạo trong bộ nhớ.
- Nó có cùng tên với lớp.
- Nó không có kiểu trả về (thậm chí không có
void). - Có thể bị quá tải để chấp nhận các bộ tham số khác nhau.
#include <iostream>
#include <string>
class Item {
private:
std::string name;
double price;
public:
// Parameterized constructor
Item(std::string itemName, double itemPrice) {
name = itemName;
price = itemPrice;
std::cout << "Object " << name << " created." << std::endl;
}
void display() {
std::cout << name << ": " << price << " EUR" << std::endl;
}
};
int main() {
// Implicit call to the constructor passing parameters
Item book("Libro C++", 29.99);
book.display();
return 0;
}Trình xây dựng mặc định
Nếu bạn không xác định bất kỳ hàm tạo nào, trình biên dịch C++ sẽ tạo một hàm tạo mặc định không có tham số. Tuy nhiên, nếu bạn viết một hàm tạo tùy chỉnh với các tham số, trình biên dịch sẽ không còn tự động tạo hàm tạo mặc định nữa, vì vậy bạn sẽ cần xác định nó một cách rõ ràng nếu cần:
class Point {
public:
int x;
int y;
// Explicit default constructor
Point() {
x = 0;
y = 0;
}
};Hàm hủy diệt
Hàm hủy được gọi tự động khi đối tượng nằm ngoài phạm vi hoặc bị xóa rõ ràng khỏi bộ nhớ.
- Nó có cùng tên với lớp đứng trước dấu ngã
~(ví dụ:~Item()). - Nó không chấp nhận tham số và không có kiểu trả về.
- Nó được sử dụng để giải phóng tài nguyên (ví dụ: đóng tệp, giải phóng bộ nhớ được cấp phát động).
class ResourceManager {
public:
~ResourceManager() {
// Cleanup code
std::cout << "Resources released." << std::endl;
}
};Hãy tự mình thử
Xác định một lớp có tên Người dùng với tên người dùng std::string thành viên riêng. Thêm một hàm tạo công khai chấp nhận một chuỗi (Người dùng (std::tên chuỗi)) và sử dụng nó để khởi tạo tên người dùng. Thêm một getter công khai std::string getUsername() trả về tên người dùng. Trong phần chính, tạo một đối tượng Người dùng chuyển qua 'Alice' làm tên và in tên người dùng của nó bằng std::cout.
Hiển thị gợi ý
Hàm tạo có cùng tên với lớp và không chỉ định bất kỳ kiểu trả về nào, thậm chí không có `void`.
Giải pháp khả dụng sau 3 lần thử
Xác định một lớp có tên Point với hai thành viên số nguyên công khai: x và y. Thêm một hàm tạo mặc định (không có tham số) khởi tạo x và y thành 0. Trong main, tạo một đối tượng Point bằng cách sử dụng hàm tạo mặc định và in x và y.
Hiển thị gợi ý
Hàm tạo mặc định không có đối số: `Point() { x = 0; y = 0; }`.
Giải pháp khả dụng sau 3 lần thử