Rumah > pembangunan bahagian belakang > C++ > Instalasi Objek `baru` lwn. Bukan `baru`: Apakah Perbezaan Fungsi Utama?

Instalasi Objek `baru` lwn. Bukan `baru`: Apakah Perbezaan Fungsi Utama?

Mary-Kate Olsen
Lepaskan: 2024-12-06 22:41:12
asal
752 orang telah melayarinya

`new` vs. Non-`new` Object Instantiation: What are the Key Functional Differences?

Instantiating Objects: 'baharu' lwn. Bukan 'baharu'

Selain daripada peruntukan memori, apakah perbezaan fungsi yang wujud antara baris berikut kod?

Time t (12, 0, 0); //t is a Time object

Time* t = new Time(12, 0, 0);//t is a pointer to a dynamically allocated Time object
Salin selepas log masuk

Bukan 'baharu' Instantiation

Baris pertama, Time t (12, 0, 0);, mencipta pembolehubah t jenis Masa dalam skop setempat. Pembolehubah ini biasanya diperuntukkan pada tindanan dan akan dimusnahkan pada penghujung skopnya.

Penyebaran 'baharu'

Sebaliknya, baris kedua, Masa* t = new Time(12, 0, 0);, memperuntukkan blok memori pada timbunan (biasanya) melalui ::operator new() atau Time::operator new() fungsi. Blok memori ini kemudiannya dimulakan menggunakan pembina Time::Time(), dengan alamat memori yang baru diperuntukkan ditetapkan sebagai penunjuk ini. Penunjuk kepada memori yang diperuntukkan disimpan dalam pembolehubah t.

Perbezaan Lain

Walaupun perbezaan utama terletak pada peruntukan memori, terdapat beberapa perbezaan halus yang lain:

  • Seumur hidup: Objek bukan 'baharu' mempunyai tempoh penyimpanan automatik, bermakna ia dimusnahkan secara automatik apabila skop mereka tamat. Objek 'baharu', sebaliknya, mempunyai tempoh storan dinamik dan mesti dipadamkan secara eksplisit untuk menuntut semula ingatan mereka.
  • Skop: Objek bukan 'baharu' ditakrifkan dan wujud dalam skop setempatnya. objek 'baharu' diperuntukkan di luar timbunan program dan tidak terhad kepada mana-mana skop tertentu.
  • Pemilikan: Memori untuk objek 'baharu' mesti diuruskan secara eksplisit dan penunjuk yang berkaitan mesti dinyahrujuk dengan selamat. Objek bukan 'baharu' diurus secara automatik oleh pengkompil, jadi tidak ada keperluan untuk pembersihan memori yang jelas.

Atas ialah kandungan terperinci Instalasi Objek `baru` lwn. Bukan `baru`: Apakah Perbezaan Fungsi Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan