Hàm Hủy (lập Trình Máy Tính) – Wikipedia Tiếng Việt
Có thể bạn quan tâm
Nội dung
chuyển sang thanh bên ẩn- Đầu
- Bài viết
- Thảo luận
- Đọc
- Sửa đổi
- Sửa mã nguồn
- Xem lịch sử
- Đọc
- Sửa đổi
- Sửa mã nguồn
- Xem lịch sử
- Các liên kết đến đây
- Thay đổi liên quan
- Liên kết thường trực
- Thông tin trang
- Trích dẫn trang này
- Tạo URL rút gọn
- Tải mã QR
- Tạo một quyển sách
- Tải dưới dạng PDF
- Bản để in ra
- Khoản mục Wikidata
Trong lập trình hướng đối tượng, hàm hủy (tiếng Anh: destructor, viết tắt: dtor) là một phương thức được gọi tự động để hủy bỏ một đối tượng. Điều này xảy ra khi thời gian sống của đối tượng được gắn với tầm vực và sự thực thi rời khỏi tầm vực đó, hay khi nó được nhúng vào trong đối tượng khác mà thời gian sống của đối tượng đó kết thúc, hoặc khi nó được cấp phát động và bị giải phóng một cách tường minh. Mục đích chính của nó là để giải phóng tài nguyên (cấp phát bộ nhớ, các tập tin hay socket được mở, kết nối cơ sở dữ liệu, khóa tài nguyên (resource lock)...) bị giữ bởi đối tượng trong suốt thời gian sống và/hoặc các thực thể bị xoá khỏi thanh ghi nhưng cẫn còn giữ tham chiếu tới nó. Việc sử dụng hàm hủy là cần thiết cho quá trình RAII.
Trong ngôn ngữ hỗ trợ cơ chế gom rác tự động, rất khó để xác định một cách chắc chắn việc gọi hàm hủy, và do vậy các ngôn ngữ này được xem là không phù hợp cho RAII. Trong các ngôn ngữ đó, hủy liên kết từ tài nguyên có sẵn phải được gọi tường minh bằng một hàm thích hợp (thường gọi là Dispose()). Phương thức này cũng được khuyên dùng để giải phóng tài nguyên, thay vì dùng finalizer.
Cú pháp hàm hủy
[sửa | sửa mã nguồn]- Trong C++, hàm hủy có cùng tên với lớp mà chúng được liên kết, nhưng với tiền tố dấu ngã (~).
- Trong D, hàm hủy được khai báo với tên ~this() (trong khi hàm tạo được khai báo với this()).
- Trong Object Pascal, hàm hủy dùng từ khóa destructor và có thể dùng tên do người dùng định nghĩa (user-defined name), nhưng thường dùng tên Destroy.
- Trong Objective-C, phương thức hàm hủy được đặt tên dealloc.
- Trong Perl, phương thức hàm hủy được đặt tên DESTROY; trong phần mở rộng hệ thống đối tượng Moose, nó có tên DEMOLISH.
- Trong PHP 5, phương thức hàm hủy được đặt tên __destruct. Không có hàm hủy ở các phiên bản PHP trước đó.[1]
- Trong Python, phương thức hàm hủy được đặt tên __del__.[2]
- Trong Swift, phương thức hàm hủy được đặt tên deinit.
Trong C++
[sửa | sửa mã nguồn]Hàm hủy có cùng tên với lớp, nhưng với một dấu ngã (~) trước nó. Nếu đối tượng được tạo ra như một biến tự động, hàm hủy của nó được tự động gọi khi nó ra khỏi tầm vực.
Ví dụ
[sửa | sửa mã nguồn] #include<cstring> #include<iostream> classfoo_t { friendstd::ostream&operator<<(std::ostream&os,foo_tconst&foo) { os<<foo.data; returnos; } private: char*data; foo_t(foo_tconst&other);// disable copy construction foo_t&operator=(foo_tconst&other);// disable assignment public: foo_t(void):data(newchar[14]){std::strcpy(data,"Hello, World!");} ~foo_t(void){delete[]data;} }; intmain() { foo_tfoo; std::cout<<foo<<'\n'; }Trong C với phần mở rộng GCC
[sửa | sửa mã nguồn]Xojo
[sửa | sửa mã nguồn]Hàm hủy trong Xojo (REALbasic) có thể ở một trong hai dạng. Mỗi dạng dùng một khai báo phương thức thông thường với một tên đặc biệt (không có tham số và giá trị trả về).
Xem thêm
[sửa | sửa mã nguồn]- en:Finalizer
- Hàm tạo (lập trình hướng đối tượng)
- Vòng đời đối tượng
- en:Resource Acquisition Is Initialization
Tham khảo
[sửa | sửa mã nguồn]- ^ Constructors and Destructors, from PHP online documentation
- ^ "3. Data model — Python 2.7.13 documentation". Truy cập ngày 30 tháng 6 năm 2017.
- Phương thức (lập trình máy tính)
- C++
Từ khóa » Hàm Destructor Phải Trả Về Giá Trị Gì
-
Hàm Hủy (Destructor) Trong Class C++
-
Hàm Hủy (Destructor) Trong C++ - Freetuts
-
[Tự Học C++] Hàm Hủy - Destructor Trong C++ »
-
Destructor Trong C++ - Techacademy
-
Hàm Khởi Tạo (constructor) Và Hàm Hủy (destructor) Của Lớp Trong OOP
-
Hàm Hủy (Destructor) Trong C++ - Chickgolden
-
Hàm Hủy Bỏ (Destructor) - Lập Trình C++
-
Tầm Quan Trọng Của Hàm Hủy Destructor? - Dạy Nhau Học
-
[oop C++] Hàm Thiết Lập Constructor, Hủy Bỏ Destructor - Lập Trình 321
-
Hàm Tạo Và Hàm Hủy Trong Python Là Gì?
-
Hàm Hủy (Destructor) Trong C++ - Gấu Đây
-
Sự Ra Đời Của Phương Thức Khởi Tạo (Constructor ...
-
Về Constructor & Destructor | Facebook
-
Contructor Và Destructor Trong C++