首頁  >  文章  >  後端開發  >  C++ 函式參數傳遞方式與物件成員函式的關係

C++ 函式參數傳遞方式與物件成員函式的關係

PHPz
PHPz原創
2024-04-12 12:15:02954瀏覽

C 函數參數可透過傳值或傳引用傳遞。物件成員函數的參數傳遞額外考慮 this 指針,預設情況下,this 指針會作為隱式參數傳遞。非引用參數預設傳值,引用參數隱式指向 this。

C++ 函数参数传递方式与对象成员函数的关系

C 函數參數傳遞方式與物件成員函數的關係

在C 中,函數參數以兩種方式傳遞:傳值和傳引用。對於物件成員函數,參數傳遞方式有額外的考慮因素。

傳值

當參數以值傳遞時,函數會得到該參數的副本。對副本所做的任何修改都不會影響原始資料。

傳引用

當參數以引用傳遞時,函數直接存取原始資料。對函數中參數所做的任何修改都會反映到函數呼叫後原始資料的變更。

物件成員函數的參數傳遞

當物件成員函數不接受任何參數時,預設情況下,this 指標會作為隱式參數傳遞給成員函數。 this 指標指向呼叫成員函數的對象,允許存取和修改對象資料。

如果物件成員函數接受參數,則參數傳遞遵循與普通函數相同的方式。但是,需要注意以下幾點:

  • 非靜態成員函數中的非參考參數預設以值傳遞。
  • 非靜態成員函數中的參考參數隱含地指向this,就像它們是this->field一樣。

實戰案例

我們透過一個範例來說明物件成員函數的參數傳遞方式。假設我們有一個Person類,它有一個name#成員變數:

class Person {
public:
    string name;

    void printName() {
        cout << "Name: " << name << endl;
    }
    
    void changeName(string newName) {
        name = newName;
    }
};
  • 傳值:
int main() {
    Person person;
    person.name = "John Doe";

    string newName = "Jane Doe";
    person.changeName(newName);

    person.printName(); // 输出:Name: Jane Doe

    // newName 变量不会受到函数调用影响,仍然是 "Jane Doe"。
}
  • 傳引用:
int main() {
    Person person;
    person.name = "John Doe";

    string& newName = person.name;
    newName = "Jane Doe";

    person.printName(); // 输出:Name: Jane Doe

    // newName 变量和 name 成员变量都指向同一个地址,因此更改 newName 会影响 name。
}

以上是C++ 函式參數傳遞方式與物件成員函式的關係的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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