Các câu hỏi phỏng vấn C++ thường gặp về Constructor và Destructor.
Constructor là gì?
Constructor là hàm thành viên của lớp trùng tên với lớp. Được gọi khi khởi tạo đối tượng. 3 loại:
- Default constructor (không tham số)
- Parameterized constructor (có tham số)
- Copy constructor (khởi tạo từ đối tượng khác)
Cú pháp
class TenLop {
TenLop() { /* constructor */ }
}
Destructor là gì?
Destructor là phương thức cùng tên lớp nhưng tiền tố là dấu ~. Được gọi khi đối tượng bị hủy hoặc ra khỏi phạm vi.
Cú pháp
class TenLop {
~TenLop() { /* destructor */ }
}
Công dụng của Constructor
Khởi tạo đối tượng khi tạo bằng từ khóa new. Khởi tạo biến thành viên, cấp phát bộ nhớ, gán giá trị mặc định.
Công dụng của Destructor
Giải phóng bộ nhớ khi đối tượng bị xóa (delete) hoặc ra khỏi phạm vi. Dọn dẹp tài nguyên.
Thứ tự thực thi Constructor
Theo thứ tự kế thừa: trước constructor lớp cơ sở, sau đến lớp dẫn xuất.
Thứ tự thực thi Destructor
Ngược lại constructor: trước hủy lớp dẫn xuất, sau hủy lớp cơ sở.
Default constructor có được tạo nếu ta tự viết constructor khác?
Nếu lập trình viên không định nghĩa constructor nào, trình biên dịch tự tạo default constructor. Nếu đã định nghĩa bất kỳ constructor nào, trình biên dịch KHÔNG tạo default constructor.