Rumah > pembangunan bahagian belakang > C++ > Adakah C Menyokong Rantaian Pembina, dan Bagaimana Ia Berbanding dengan C#?

Adakah C Menyokong Rantaian Pembina, dan Bagaimana Ia Berbanding dengan C#?

Mary-Kate Olsen
Lepaskan: 2024-12-25 14:22:18
asal
1077 orang telah melayarinya

Does C   Support Constructor Chaining, and How Does It Compare to C#?

Constructor Chaining dalam 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 ?

C 11 dan Seterusnya

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) {}
};
Salin selepas log masuk

Dalam contoh ini, pembina Foo(int y) mewakilkan kepada pembina Foo(char x, int y) dengan x ditetapkan kepada 'a'.

C 03

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)
};
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan