首頁 >後端開發 >C++ >C 建構函式可以連結嗎?

C 建構函式可以連結嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-21 02:58:13250瀏覽

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

C 中可以完成建構子連結嗎?

在 C# 中,以特定順序呼叫建構子的能力是一種常見的做法。作為一名尋求在 C 中複製此功能的 C# 開發人員,問題出現了:可以透過建構函式鏈來實現嗎?

C 11 以後

慶幸! C 11 引進了一個稱為委託建構函式的功能,它模仿 C# 中的建構子連結。其寫法如下:

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

C 03:不同的方法

儘管C 03 中沒有直接構造函數鏈接,但存在兩種解決方法:

預設參數: 使用預設值組合建構子參數。

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) {}

總之,C 11 實作了真正的建構函式鏈,而 C 03 提供了解決方法像預設參數和 init 方法一樣來實現類似的功能。

以上是C 建構函式可以連結嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn