Rumah >pembangunan bahagian belakang >C++ >Adakah C Menyokong Rantaian Pembina, dan Bagaimana Ia Berbanding dengan C#?
Sebagai pembangun C#, anda mungkin biasa dengan keupayaan untuk memanggil pembina lain dari dalam pembina. Dalam C#, ini dikenali sebagai rantaian pembina. Adakah terdapat ciri yang serupa dalam C ?
Dalam C 11 dan versi yang lebih baru, rantaian pembina disokong melalui mewakilkan pembina. Sintaks berbeza sedikit daripada C#:
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
Dalam contoh ini, pembina Foo(int y) mewakilkan kepada pembina Foo(char x, int y) dengan x ditetapkan kepada 'a'.
Malangnya, rantaian pembina tidak disokong secara langsung dalam C 03. Walau bagaimanapun, terdapat dua pilihan utama untuk mensimulasikan tingkah laku ini:
1. Parameter Lalai:
Anda boleh menggabungkan berbilang pembina dengan menyediakan nilai lalai untuk beberapa parameter:
class Foo { public: Foo(char x, int y = 0); // Combines constructors Foo(char) and Foo(char, int) };
2. Kaedah Init:
Ekstrak kod biasa ke dalam kaedah peribadi:
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) { // Shared initialization code }
Walaupun teknik ini tidak menyediakan rantaian pembina sebenar, ia membenarkan kefungsian yang serupa.
Atas ialah kandungan terperinci Adakah C Menyokong Rantaian Pembina, dan Bagaimana Ia Berbanding dengan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!