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

C 建構函式可以連結嗎?

Mary-Kate Olsen
發布: 2024-12-21 02:58:13
原創
175 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板