Rumah >pembangunan bahagian belakang >C++ >Bolehkah Pembina C Dirantai, dan Jika Ya, Bagaimana?

Bolehkah Pembina C Dirantai, dan Jika Ya, Bagaimana?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-21 02:58:13169semak imbas

Can C   Constructors Be Chained, and If So, How?

Bolehkah Constructor Chaining Dilakukan dalam C ?

Dalam C#, keupayaan untuk memanggil pembina dalam susunan tertentu adalah amalan biasa. Sebagai pembangun C# yang ingin meniru fungsi ini dalam C , persoalan timbul: bolehkah ia dicapai melalui rantaian pembina?

C 11 dan Seterusnya

Bergembiralah! C 11 memperkenalkan ciri yang dikenali sebagai mewakilkan pembina yang meniru rantaian pembina yang dilihat dalam C#. Begini cara ia ditulis:

class Foo {
public:
  Foo(char x, int y) {}
  Foo(int y) : Foo('a', y) {}
};

C 03: Pendekatan Berbeza

Walaupun tiada rantaian pembina langsung dalam C 03, dua penyelesaian wujud:

Parameter Lalai: Gabungkan pembina menggunakan lalai parameter.

class Foo {
public:
  Foo(char x, int y=0); // Combines two constructors (char) and (char, int)
};

Kaedah Init: Gunakan kaedah permulaan yang dikongsi.

class Foo {
public:
  Foo(char x);
  Foo(char x, int y);

private:
  void init(char x, int y);
};

Foo::Foo(char x) : init(x, int(x) + 7) {}
Foo::Foo(char x, int y) : init(x, y) {}

void Foo::init(char x, int y) {}

Kesimpulannya, C 11 membolehkan rantaian pembina sebenar, manakala C 03 menawarkan penyelesaian seperti parameter lalai dan kaedah init untuk mencapai kefungsian yang serupa.

Atas ialah kandungan terperinci Bolehkah Pembina C Dirantai, dan Jika Ya, Bagaimana?. 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