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?
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) {} };
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!