Rumah >pembangunan bahagian belakang >C++ >Senarai Pemula Ahli lwn. Tugasan Pembina: Bilakah Anda Harus Menggunakan Yang Mana?

Senarai Pemula Ahli lwn. Tugasan Pembina: Bilakah Anda Harus Menggunakan Yang Mana?

DDD
DDDasal
2024-12-23 02:32:37550semak imbas

Member Initializer List vs. Constructor Assignments: When Should You Use Which?

Senarai Permulaan vs Tugasan Pembina: Perbezaan Dalaman

Apabila memulakan ahli kelas, seseorang boleh memilih untuk menggunakan sama ada senarai pemula ahli atau memberikan nilai dalam badan pembina. Secara dalaman, pendekatan ini mempunyai perbezaan yang ketara.

Senarai Pemula Ahli

Menggunakan senarai pemula ahli, seperti yang dilihat dalam contoh ini:

MyClass::MyClass(): _capacity(15), _data(NULL), _len(0)
{
}

memulakan pembolehubah ahli secara langsung sebelum memasuki badan pembina. Ini amat berguna untuk:

  • Memulakan ahli tetap: Ahli ini mesti dimulakan sebelum badan pembina dilaksanakan dan senarai pemula ahli adalah satu-satunya cara untuk berbuat demikian.
  • Memulakan rujukan: Rujukan mesti dimulakan sebelum badan pembina, dan senarai pemula ahli ialah kaedah pilihan.
  • Melalukan parameter kepada pembina kelas asas: Apabila mewarisi daripada kelas asas dengan pembina berparameter, ahli kelas asas mesti dimulakan menggunakan pemula ahli senarai.

Pembina Tugasan

Sebaliknya, memberikan nilai dalam badan pembina, seperti dalam contoh ini:

MyClass::MyClass()
{
  _capacity=15;
  _data=NULL;
  _len=0
}

melaksanakan pemulaan semasa pelaksanaan pembina. Pendekatan ini biasanya digunakan untuk ahli dan ahli bukan tetap yang boleh dimulakan berdasarkan parameter pembina.

Perbandingan Kod Dijana

Secara amnya, kedua-dua pendekatan menjana serupa kod. Walau bagaimanapun, dalam kes ahli tetap atau rujukan, hanya senarai pemula ahli boleh memulakannya, kerana tugasan pembina akan mengakibatkan ralat penyusunan.

Atas ialah kandungan terperinci Senarai Pemula Ahli lwn. Tugasan Pembina: Bilakah Anda Harus Menggunakan Yang Mana?. 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