Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengatasi Operator `baru` dan `memadamkan` Global secara Universal dalam Pangkalan Kod Besar?
Mengatasi Baharu Global & Padam Operator Dengan Berkesan
Masalah:
Menggantikan yang baharu dan global padam operator untuk menggunakan pengurusan memori tersuai memberikan cabaran dalam pangkalan kod berskala besar. Memasukkan fail pengepala yang mengandungi lebihan dalam setiap fail adalah tidak praktikal. Bagaimanakah seseorang boleh memastikan penggunaan universal lebihan beban ini?
Penyelesaian:
Mengatasi pengendali baharu dan padam ialah proses yang dilakukan pada masa pautan. Dengan mencipta unit terjemahan (TU) berasingan yang mentakrifkan pengendali dan memautkannya ke dalam projek, seseorang boleh menggantikan pengendali lalai secara global tanpa mengubah suai pangkalan kod sedia ada.
Sampel Kod:
Berikut ialah contoh TU yang mentakrifkan operator baharu dan padam:
<code class="cpp">// optional_ops.cpp void * operator new(std::size_t n) throw(std::bad_alloc) { //... } void operator delete(void * p) throw() { //... }</code>
Termasuk
Alternatif untuk C 11 dan Kemudian:
C 11 memperkenalkan cara yang lebih mudah untuk mentakrifkan lebihan baharu, menggunakan decltype(sizeof(0)) untuk menentukan jenis parameter saiz:
<code class="cpp">void * operator new(decltype(sizeof(0)) n) noexcept(false) { //... }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Operator `baru` dan `memadamkan` Global secara Universal dalam Pangkalan Kod Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!