2017-02-25 13 views
1

のは、私は、以下の機能を持っているとしましょう:関数に渡された参照パラメータを返すと、内部的にはどうなりますか?

int f(int& x) 
{ 
    x++; 
    return x; 
} 

最初の質問は、return文は、関数がint &を返していないので、xを参照の値をコピーしません。

2番目の質問では、なぜリテラルで関数を呼び出せないのですか?場合によっては値を持つリテラルを使用して関数を呼び出す場合はどうすればよいですか?私はオーバーロードを試しました

int f(int x) 
{ 
    x++; 
    return x; 
} 

リテラルで呼び出すとコンパイルされます。しかし、変数を渡すとあいまいな呼び出しエラーが発生します。これを達成する方法はありますか?

+0

はあいまい - >最初の関数を削除します。しかし、あなたの関数fを正確に何をしたいのですか? –

+0

最初の質問については、関数fの使用例を挙げることができますか? –

+0

このリンクをチェックしてください。http://courses.washington.edu/css342/zander/css332/passby.html私はこれがあなたの望むものだと思っています。 –

答えて

3

は、たぶんこれが何をしたいです:

int F(const int& x) { return x + 1; } 
int F(int& x) { x++; return x; } 
+0

これは、リテラル値を渡すときにコンパイルされ、機能します。しかし、なぜ私は理解していないのですか?定数参照を求めるとき、最初の関数はどのようにリテラルを取ることができますか? – bkarj

+0

@bkarj:参照がconstなので、変数の代わりに値を渡すことができます。 –

+0

ありがとう、意味がある – bkarj

関連する問題