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

我可以在 C 方法中使用成員變數作為預設參數嗎?

Mary-Kate Olsen
發布: 2024-11-14 14:37:01
原創
624 人瀏覽過

Can I Use Member Variables as Default Arguments in C   Methods?

在C 中使用成員變數作為預設參數

簡介

當建立具有多個參數的方法的類別時,使用以下命令可能會很有幫助:有些參數是可選的。透過使用預設參數功能,您可以為參數設定預設值,當客戶端程式碼未提供值時可以使用該預設值。

問題:使用非靜態成員變數作為預設參數

在您的範例中,您嘗試使用成員變數 (initPos) 作為 MoveTo 成員函數的預設參數。但是,編譯器發出錯誤,指示非靜態資料成員的使用無效。

問題分析

預設情況下,成員變數在方法的作用域中不可訪問,因為它們被視為一部分物件的狀態而不是方法的上下文。因此,預設情況下,成員函數中的參數只能依賴類別內或全域範圍的元素。

解決方案:方法重載

要解決此問題,您需要訴諸方法重載。方法重載可讓您建立具有不同簽章的相同方法的多個版本。以下是如何在程式碼中實現它:

// Object.h
class Object
{
public:
    ...
    void MoveTo(double speed);
    void MoveTo(double speed, Point position);

protected:
    Point initPos; 
    Point currPos;

};
登入後複製
// Object.c
void Object::MoveTo(double speed)
{
    MoveTo(speed, initPos);
}

void Object::MoveTo(double speed, Point position)
{
    // Everything is done here.
}
登入後複製

透過定義 MoveTo 方法的兩個版本,您可以有效地提供預設參數,而無需直接依賴成員變數。 MoveTo(double) 方法使用 initPos 值作為第二個參數呼叫 MoveTo(double, Point) 方法,讓您保留所需的功能並避免編譯器錯誤。

以上是我可以在 C 方法中使用成員變數作為預設參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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