01/10/2018, 17:24
Gọi destructor 2 lần của cùng một đối tượng
Mình có đoạn code:
#include <iostream>
using namespace std;
class Test
{
public:
~Test()
{
cout<<"Deleting...";
}
};
void print()
{
Test a;
a.~Test();
return;
}
int main()
{
print();
}
Nó in ra “Deleting…Deleting…”. Cho mình hỏi khi mình gọi destructor lần I, nó có thực sự hủy a không?
Bài liên quan
Hi Le Ly Vinh.
P/S Bạn hiểu thế nào là giải phóng một đối tượng ?
Nghĩa là nó không sẽ không làm gì “a” ạ?
Hi Le Ly Vinh.
Nó vẫn là một hàm bình thường bạn gọi nó là gì thì nó làm nây thôi.
Hàm huỷ được gọi khi:
Khi bạn gọi destructor, nó không bị huỷ.
Bản thân đối tượng ko bị hủy khi gọi hàm hủy. Hàm hủy này hay dùng để free những thứ mà đối tượng đang nắm giữ (và trả lại trạng thái ban đầu, nếu có). Vấn đề xảy ra khi đối tượng đang xài chung tài nguyên đang giữ và bị free kiểu như vậy, nên xài chung thì phải viết khác.
p/s: vừa sửa lại tiêu đề vì
delete
hai lần là toạch