首頁 > 後端開發 > C++ > 主體

C 中的靜態函數可以用非靜態函數重載嗎?

Mary-Kate Olsen
發布: 2024-10-26 03:39:02
原創
173 人瀏覽過

Can Static Functions Be Overloaded with Non-Static Functions in C  ?

用C 語言中的非靜態函數重載靜態函數

上下文:

上下文:

重載函數C 不支援具有不同的傳回類型,並且在嘗試使用非靜態函數重載靜態函數時同樣適用。這種情況在提供的類別定義中進行了說明,但它產生了錯誤。

    標準禁止:
  • C 標準明確禁止此行為(ISO 14882: 2003,13.1/2 節):

僅傳回類型不同的函數不允許重載。 具有相同名稱和參數類型的成員函數宣告不能重載,如果any 是靜態成員函數宣告。

    歧義注意事項:
即使允許重載,也會引入歧義,因為:

<code class="cpp">class Foo {
public:
    static void print() { cout << "static" << endl; }
};

Foo f;
f.print(); // Ambiguous: static or non-static call?</code>
登入後複製
可以根據C 標準(ISO 14882:2003,第9.4/2 節)在實例上呼叫靜態函數。

例如:

    替代方法:
  • 由於在C 中無法確定函數是否被靜態調用,因此可以使用替代方法來實現所需的功能:
  • 使用預處理器
  • 定義可以區分靜態和非靜態呼叫的巨集。
  • 為靜態和非靜態行為建立具有不同名稱
  • 的單獨函數。
根據物件是否存在使用條件語句(例如,檢查 this 的值)。但是,此方法無法區分靜態呼叫和實例呼叫。

以上是C 中的靜態函數可以用非靜態函數重載嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!