- uhm, cái này với người mới học thì khá là khó hiểu, khi nào lập trình nhiều với các kiểu dữ liệu tự định nghĩa thì bạn sẽ hiểu hơn. Nói đơn giản thì là thế này, khi một biến được khai báo (không tính con trỏ nhá, cái đó nói sau), máy tính cần cấp một số ô nhớ nhất định cho biến đó dùng làm chỗ chứa giá trị của nó, đến khi không cần biến đó thì thu hồi bộ nhớ cấp cho biến đó (coi như nó bị hủy). Với các class do bạn tự định nghĩa thì có thể khai báo hàm tạo và hàm hủy, bạn sẽ yêu cầu máy làm một số thao tác nào đó khi khởi tạo (hay gặp nhất là gán giá trị khởi tạo chẳng hạn) và làm gì đó trước khi hủy. Nếu không khai báo hai hàm này thì máy chỉ làm việc cấp phát và thu hồi bộ nhớ của biến đó mà không làm gì khác.
- Khi bạn viết: A _a; thì thực ra máy đã tự gọi đến hàm khởi tạo của class A rồi,hàm hủy được gọi khi bạn delete 1 con trỏ của class A, hoặc máy tự hủy biến "_a" ở trên khi ra khỏi hàm (cơ chế xóa các biến cục bộ của C).
- code ví dụ:
Mã:
class A
{
public :
char *p;
int x,y;
A()
{
x=0;y=0;
cout<<" tao A
";
}
~A()
{
cout<<" huy A
";
}
};
void abc()
{
A a;
}
int main(){
abc();
cin.get();
}
=> bạn sẽ thấy in ra câu "tao A" và "huy A" mặc dù bạn không viết lời gọi hàm. câu "huy A" là do lúc ra khỏi hàm abc() , máy hủy biến a (biến cục bộ) nên tự gọi hàm hủy.
- với biến con trỏ A *a, thì hàm tạo và hủy được gọi khi bạn viết câu lệnh "new A()" và "delete a;", nó không tự gọi hàm tạo và hủy nữa dù con trỏ a có là biến cục bộ, do đó nếu bạn quên gọi "delete a;" thì sẽ thất thoát bộ nhớ, thất thoát nhiều thì chết chương trình. Ưu điểm là bạn kiểm soát được kĩ càng nhưng sẽ tổn thất bộ nhớ nếu bạn quên gọi hàm hủy.
NGUỒN SỈ ÁO KHOÁC DENIM NỮ TPHCM CHẤT LƯỢNG CAO Bạn muốn nhập sỉ áo khoác denim nữ để bắt đầu việc buôn bán Online phong cách nhưng lại chưa có kinh nghiệm, muốn sắm xưởng sỉ xống áo vừa có thể giải...
Xưởng sỉ áo khoác jeans denim giá...