C++ 預設引數與引用傳遞:語法、用法及示例

小万哥丶發表於2024-04-15

C++ 預設引數

預設引數概述

在 C++ 中,函式引數可以擁有預設值。這意味著,在呼叫函式時,如果省略了某個引數,那麼將使用為該引數指定的預設值。

設定預設引數

預設引數值使用等號 = 符號進行設定,位於引數宣告的型別之後。例如:

void myFunction(string country = "Norway");

在這個例子中,country 是一個引數,它的預設值為 "Norway"。這意味著,如果在呼叫 myFunction 時沒有顯式指定 country 引數,那麼函式將使用 "Norway" 作為其值。

示例:使用預設引數

以下示例展示瞭如何使用預設引數:

void myFunction(string country = "Norway") {
  cout << country << "\n";
}

int main() {
  myFunction("Sweden");  // 輸出:Sweden
  myFunction("India");   // 輸出:India
  myFunction();        // 輸出:Norway
  myFunction("USA");    // 輸出:USA
  return 0;
}

在該示例中,myFunction 函式有兩個呼叫:

  • 第一次呼叫顯式指定了引數 country"Sweden",因此輸出 "Sweden"
  • 第二次呼叫顯式指定了引數 country"India",因此輸出 "India"
  • 第三次呼叫沒有指定引數 country,因此使用預設值 "Norway",輸出 "Norway"
  • 第四次呼叫顯式指定了引數 country"USA",因此輸出 "USA"

多個引數和預設引數

函式可以擁有多個引數,其中一部分或全部都可以擁有預設值。例如:

void myFunction(string fname, int age = 18) {
  cout << fname << " Refsnes is " << age << " years old.\n";
}

int main() {
  myFunction("Liam");       // 輸出:Liam Refsnes is 18 years old.
  myFunction("Jenny", 25);  // 輸出:Jenny Refsnes is 25 years old.
  return 0;
}

在這個例子中,myFunction 函式有兩個引數:fnameageage 引數擁有預設值 18,這意味著如果在呼叫函式時沒有顯式指定 age 引數,那麼將使用 18 作為其值。

函式返回值和預設引數

預設引數僅適用於函式引數,不適用於函式返回值。函式的返回值型別由函式宣告中的型別決定,與預設引數無關。

總結

C++ 中的預設引數是一種方便的功能,可以簡化函式呼叫並提高程式碼的可讀性。透過使用預設引數,您可以避免在每次呼叫函式時都需要顯式指定所有引數,尤其是對於那些經常使用相同值的可選引數。

C++ 函式 - 引用傳遞

引用傳遞概述

在 C++ 中,函式引數可以使用引用傳遞的方式進行傳遞。引用傳遞是指函式直接訪問函式呼叫者提供的變數的記憶體地址,而不是複製變數的值。這意味著函式可以直接修改呼叫者變數的值,而無需建立副本。

引用傳遞通常用於以下兩種情況:

  • 需要在函式中修改呼叫者變數的值
  • 需要在函式中傳遞大型資料結構,例如陣列或物件,以避免複製資料的開銷

引用傳遞語法

引用傳遞的引數宣告與普通引數宣告類似,但需要在引數型別後面新增一個 & 符號。例如:

void swapNums(int &x, int &y);

在這個例子中,xy 是引用引數。這意味著函式 swapNums 將直接訪問呼叫者提供的變數的記憶體地址。

引用傳遞示例

以下示例展示瞭如何使用引用傳遞來交換兩個變數的值:

void swapNums(int &x, int &y) {
  int temp = x;
  x = y;
  y = temp;
}

int main() {
  int firstNum = 10;
  int secondNum = 20;

  cout << "Before swap: " << firstNum << " " << secondNum << endl;

  swapNums(firstNum, secondNum);

  cout << "After swap: " << firstNum << " " << secondNum << endl;

  return 0;
}

在該示例中,swapNums 函式接收兩個引用引數 xy。當呼叫 swapNums 函式時,它將直接訪問 firstNumsecondNum 變數的記憶體地址,並交換它們的值。

引用傳遞與值傳遞的區別

特性 引用傳遞 值傳遞
引數型別 引用型別 (int&、string& 等) 普通型別 (int、string 等)
引數傳遞 直接傳遞變數的記憶體地址 複製變數的值
修改引數值 可以修改呼叫者變數的值 不能修改呼叫者變數的值
效率 通常比值傳遞更有效 通常比引用傳遞效率低

引用傳遞的注意事項

  • 引用傳遞的引數必須在函式呼叫之前進行初始化。
  • 不能將空指標或野指標作為引用傳遞的引數。
  • 引用傳遞的引數不能重新繫結到其他變數。

總結

C++ 中的引用傳遞是一種強大的功能,可以提高程式碼的效率和可讀性。透過理解引用傳遞的語法、用法和注意事項,您可以編寫更加簡潔、高效的 C++ 程式。

最後

為了方便其他裝置和平臺的小夥伴觀看往期文章:

微信公眾號搜尋:Let us Coding,關注後即可獲取最新文章推送

看完如果覺得有幫助,歡迎點贊、收藏、關注

相關文章