Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Rantaian Pembina dalam C Berbanding dengan Pelaksanaan C#?
Constructor Chaining dalam C : Perbandingan dengan C#
Dalam C#, pembina boleh dirantai bersama untuk memulakan objek secara berperingkat. Sebagai pembangun C#, anda mungkin tertanya-tanya sama ada mekanisme yang serupa wujud dalam C .
Dalam coretan kod C# yang disediakan:
class Test { public Test() { DoSomething(); } public Test(int count) : this() { DoSomethingWithCount(count); } public Test(int count, string name) : this(count) { DoSomethingWithName(name); } }
Setiap pembina memanggil pendahulunya, membenarkan pemulaan berurutan bagi sesuatu keadaan objek.
C 11 dan Seterusnya
C 11 memperkenalkan ciri yang dikenali sebagai mewakilkan pembina yang menyediakan kefungsian yang serupa dengan rantaian pembina dalam C#.
class Foo { public: Foo(char x, int y); Foo(int y) : Foo('a', y) {}; };
Dalam contoh ini, pembina Foo(int y) mewakilkan permulaan kepada pembina Foo(char x, int y) dengan nilai khusus untuk x dan y.
C 03
C 03 tidak menyokong rantaian pembina secara langsung. Walau bagaimanapun, terdapat dua kaedah penyelesaian:
class Foo { public: Foo(char x, int y=0); // combines two constructors (char) and (char, int) // ... };
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) { // ... }
Untuk C 03, teknik kaedah init biasanya lebih disukai kerana fleksibiliti dan potensi faedah prestasi berbanding menggunakan parameter lalai.
Atas ialah kandungan terperinci Bagaimanakah Rantaian Pembina dalam C Berbanding dengan Pelaksanaan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!