Giả sử tôi có mã nàyC++ là destructor ảo vẫn cần thiết nếu không có thành viên dữ liệu trong nguồn gốc?
class Base{
public:
int getVal();
private:
int a, b;
};
class Derived::public Base{
public:
void printVal();
};
int main(){
Base *b = new Derived();
delete b;
}
Tôi biết một destructor ảo sẽ xóa mọi thứ đúng cách, nhưng là nó xấu để xóa với con trỏ cơ sở (khi không có destructor ảo) ngay cả khi không có chức năng ảo và không có các thành viên dữ liệu trong lớp dẫn xuất? Điều gì sẽ xảy ra nếu điều này được thực hiện?
Cảm ơn David. – snk
Thật nguy hiểm khi dựa vào những thứ sẽ "có khả năng hoạt động" và cho rằng bạn "nên ổn thôi". Tốt hơn là viết mã mà _will_ làm việc, sau đó bạn _know_ bạn sẽ ổn thôi. –
James, tôi sẽ đảm bảo rằng luôn luôn có một destructor ảo. Đây chỉ là một giả thuyết được hỏi bởi một ai đó và không có câu trả lời cho nó. Cảm ơn cả hai một lần nữa. – snk