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
函式有兩個引數:fname
和 age
。age
引數擁有預設值 18
,這意味著如果在呼叫函式時沒有顯式指定 age
引數,那麼將使用 18
作為其值。
函式返回值和預設引數
預設引數僅適用於函式引數,不適用於函式返回值。函式的返回值型別由函式宣告中的型別決定,與預設引數無關。
總結
C++ 中的預設引數是一種方便的功能,可以簡化函式呼叫並提高程式碼的可讀性。透過使用預設引數,您可以避免在每次呼叫函式時都需要顯式指定所有引數,尤其是對於那些經常使用相同值的可選引數。
C++ 函式 - 引用傳遞
引用傳遞概述
在 C++ 中,函式引數可以使用引用傳遞的方式進行傳遞。引用傳遞是指函式直接訪問函式呼叫者提供的變數的記憶體地址,而不是複製變數的值。這意味著函式可以直接修改呼叫者變數的值,而無需建立副本。
引用傳遞通常用於以下兩種情況:
- 需要在函式中修改呼叫者變數的值
- 需要在函式中傳遞大型資料結構,例如陣列或物件,以避免複製資料的開銷
引用傳遞語法
引用傳遞的引數宣告與普通引數宣告類似,但需要在引數型別後面新增一個 &
符號。例如:
void swapNums(int &x, int &y);
在這個例子中,x
和 y
是引用引數。這意味著函式 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
函式接收兩個引用引數 x
和 y
。當呼叫 swapNums
函式時,它將直接訪問 firstNum
和 secondNum
變數的記憶體地址,並交換它們的值。
引用傳遞與值傳遞的區別
特性 | 引用傳遞 | 值傳遞 |
---|---|---|
引數型別 | 引用型別 (int&、string& 等) | 普通型別 (int、string 等) |
引數傳遞 | 直接傳遞變數的記憶體地址 | 複製變數的值 |
修改引數值 | 可以修改呼叫者變數的值 | 不能修改呼叫者變數的值 |
效率 | 通常比值傳遞更有效 | 通常比引用傳遞效率低 |
引用傳遞的注意事項
- 引用傳遞的引數必須在函式呼叫之前進行初始化。
- 不能將空指標或野指標作為引用傳遞的引數。
- 引用傳遞的引數不能重新繫結到其他變數。
總結
C++ 中的引用傳遞是一種強大的功能,可以提高程式碼的效率和可讀性。透過理解引用傳遞的語法、用法和注意事項,您可以編寫更加簡潔、高效的 C++ 程式。
最後
為了方便其他裝置和平臺的小夥伴觀看往期文章:
微信公眾號搜尋:Let us Coding
,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關注