01/10/2018, 11:30
Override và Overload operator new/delete trong C++ để làm gì?
Source code em đang đọc có một số class override lại operator new, delete. Em không biết tại sao lại cần phải override lại để làm gì?
Cao nhân nào có thể chỉ giúp em mục đích của việc override này được không?
Bài liên quan
Vấn đề bạn đang nói liên quan đến một khái niệm gọi là “polymorphism” nghĩa là đa hình. Nói đại khái thế này: có một hàm ở lớp cha và bạn kế thừa từ lớp đó, nhưng ở lớp dẫn xuất bạn muốn khai triển hàm đó theo một cách khác dựa trên hàm có sẵn từ lớp cha để phục vụ cho mục đích gì đó, khi đó bạn sẽ sử dụng override(hay còn gọi là ghi đè) để định nghĩa lại hàm đó từ lớp cha sao cho phù hợp với mục đích của bạn ở lớp dẫn xuất.
Output:
The Parent print function was called
The child print function was called
Như bạn thấy ở đoạn code trên, thì hàm print đã được override hay ‘ghi đè’ lại ở lớp dẫn xuất của nó.
Nguồn tham khảo từ : http://www.geeksforgeeks.org/polymorphism-in-c/
Vấn đề của em không phải là cái OOP này. vấn đề của em là tại sao lại cần phải override lại hàm “new” - cái để khởi tạo đối tượng cho con trỏ ấy ạ. cái operator “new” của C++ ý ạ.
Xin lỗi vì k thể upload code lên. do vấn đề bảo mật của công ty.
đại khái n thế này:
class A{
public:
void* operator new(size_t);
}
Bác hiểu ý em chứ?
Cái này chắc là nên đọc trực tiếp từ trong document của nó để tham khảo công dụng, chứ mình cũng chưa từng nghĩ tới khi nào nên dùng nó:
http://en.cppreference.com/w/cpp/memory/new/operator_new
Thanks bác nhiều!!!
Công dụng đầu tiên mình nghĩ đến là để thiết lập customized allocator, đứng ra xin 1 mảng (!= array) lớn mem rồi phát cho chương trình của mình để đảm bảo tính realtime, phát hiện mem leak.
Dạ. vấn đề leak mem thì chỉ cần Dev để ý kỹ là đc (1 đội test sẽ lo chuyện có leak hay không). còn đứng ra xin 1 mảng động thì em nghĩ việc này “new” n đã đủ tốt rồi ạ
What is the benefit of overloading 'new' and 'delete' for custom memory allocation in game engines?