簡體   English   中英

函數中的默認參數[C ++]

[英]Default argument in a function [C++]

我試着這樣做:

int& g(int& number = 0)
{
//maybe do something with number
    return number;
}

但它不起作用。 它必須通過引用傳遞。 感謝您的任何幫助。

PS我認為一旦你輸入Title就出現“相關問題”是一個好主意,但我也認為只有當它們與特定語言相關時才應該顯示它們,即對於我來說看待類似主題並不是沒用的問題,但在Ruby中。

如果你真的想這樣做:

  • 使引用const,以便臨時可以綁定它
  • 將默認值放在函數聲明中,而不是定義中

例如:

// header
const int & g( const int & number = 0 );


// implementation
const int & g( const int & number )
{
//maybe do something with number
    return number;
}

PS發布關於SO如何在Meta上工作的投訴,而不是在這里(為了它將會做的所有好處 - 回答這個問題表明他們仍然沒有修復代碼后列表錯誤)

你有一個非const引用,這意味着你可以修改referand。 但是你的默認值是常數 0。

這個函數有默認值嗎?

非const引用不能綁定到臨時(文字)。

這里最有意義的是接受參數並按返回,並將其留給調用者以將結果分配回變量(如果他們想要的話): k = g(k);

也許您也可以使用兩個重載,但“默認”一個不能通過引用返回,這可能會導致一些混淆:

int& g(int&);

int g()
{ 
    int arg = 0;
    return g(arg);
}

你的成語是錯的。

全局函數基本上不應該返回引用 - 除了隱藏全局變量之外。 這種情況是可以接受的,然而,使用是有問題的:如果變量已經是全局變量,為什么要將它隱藏在功能調用之后呢?

如果您的目標是修改參數,那么為什么要給出一個返回值? 僅在您返回舊值時才有用 - 並且必須“按值”而不是“按引用”完成。


int g(int& arg) {
   int oldarg( arg );
   // maybe modify arg
   // return old value of arg
   return oldarg;
}

要么:


const int& g(int& arg) {
    static int accumulator;
    accumulator += arg;
    return accumulator;
}

在后一種情況下,通過引用傳遞參數和/或通過引用返回累加器是不必要的。

歡呼聲,h。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM