Tôi có một lớp cơ sở A và một nguồn gốc lớp B:Tại sao destructor của tôi không bao giờ được gọi?
class A
{
public:
virtual f();
};
class B : public A
{
public:
B()
{
p = new char [100];
}
~B()
{
delete [] p;
}
f();
private:
char *p;
};
Đối với bất kỳ lý do destructor không bao giờ được gọi là - tại sao? Tôi không hiểu điều này.
Mặc dù mọi người đã tìm ra vấn đề là gì (Vì đây là câu hỏi thường gặp trong C++), tôi vẫn đề nghị bạn nên hiển thị mã như thế nào bạn sử dụng lớp B. (Nếu bạn sử dụng nó theo cách này: B * p = new B(); xóa p; và destructor không bao giờ được gọi, sau đó nó phải là vấn đề hoàn toàn khác nhau.) –