Tôi cần phải thiết lập cấu trúc thừa kế lớp, trong đó lớp cơ sở trừu tượng chỉ chứa các biến thành viên (nhưng không có phương thức thành viên). Các phương thức thành viên sẽ được định nghĩa bởi các lớp dẫn xuất. Do đó, những gì tôi cần là bài đăng này: Making a class abstract without any pure virtual methodsconstructor được bảo vệ so với destructor ảo tinh khiết
Từ 2 câu trả lời trên đó, tôi nhận ra có 2 cách để đạt được nó:
- Hãy destructor tinh khiết ảo.
- Đảm bảo hàm tạo được bảo vệ.
Tôi tò mò muốn biết sự khác biệt giữa hai cách tiếp cận. Có những tình huống mà người ta nên được ưa thích hơn người khác (hoặc có thể một số tình huống đặc biệt mà người ta sẽ làm việc nhưng không phải là người khác)? Tôi nghĩ về nó và không thể nghĩ ra bất cứ điều gì.
Tôi đã tìm kiếm qua các câu trả lời trên một số bài đăng ở đây (Is there a use for making a protected destructor virtual?, C++: Protected Class Constructor, Should an abstract class' destructor be pure virtual?) để cố gắng kết hợp với nhau, nhưng tôi không thể đi đến kết luận.
Điều này không * thực sự * trả lời câu hỏi của OP. Một destructor ảo không thuần túy có thể được sử dụng với trường hợp constructor được bảo vệ và mã ví dụ của bạn sẽ hiển thị hành vi đã xác định. Bạn đang nói về một vấn đề liên quan, nhưng trực giao. –