Rumah >pembangunan bahagian belakang >C++ >Bilakah Saya Harus Menggunakan Operator 'baru' dalam C ?

Bilakah Saya Harus Menggunakan Operator 'baru' dalam C ?

DDD
DDDasal
2024-11-30 10:51:11817semak imbas

When Should I Use the

Bila Menggunakan "baharu" dalam C ?

Sebagai pembangun yang beralih daripada C#/Java, memahami instantiasi objek dalam C boleh membingungkan . Artikel ini menjelaskan masa untuk menggunakan pengendali "baharu" dan bila untuk mengelak daripadanya.

Menggunakan "baharu": Menghasilkan Panjang Umur Objek

Gunakan "baharu" apabila anda mahu objek berterusan sehingga ia dipadamkan secara eksplisit. Tanpa "baru," objek akan dimusnahkan sebaik sahaja ia terkeluar dari skop. Pertimbangkan contoh berikut:

void foo() {
  Point p = Point(0,0); // p is destroyed here
}

for (...) {
  Point p = Point(0,0); // p is destroyed after each iteration
}

Menggunakan "baharu" untuk Tatasusunan

Tatasusunan dalam C diperuntukkan di tempat (iaitu, pada tindanan). Walau bagaimanapun, jika anda perlu mencipta tatasusunan dengan saiz yang ditentukan semasa masa jalan, anda mesti memperuntukkannya menggunakan "baharu."

void foo(int size) {
   Point* pointArray = new Point[size];
   ...
   delete [] pointArray;
}

Peruntukan Di Tempat (Tanpa "baharu")

Peruntukan di tempat adalah lebih baik atas sebab prestasi. Ia berlaku secara automatik untuk objek yang diisytiharkan dalam kelas.

class Foo {
  Point p; // p will be destroyed when Foo is
};

Ingat bahawa memperuntukkan dan membebaskan objek menggunakan "baharu" adalah lebih intensif pengiraan daripada peruntukan di tempat. Gunakannya hanya apabila perlu untuk mengelakkan overhed yang tidak perlu.

Atas ialah kandungan terperinci Bilakah Saya Harus Menggunakan Operator 'baru' dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn