値渡しと参照渡しに関して疑問があります。
c++
1int func(int i){return ++i;} 2int func2(int& i){return ++i;}
このような関数を定義したとします。
ここで、関数を呼び出すとき、
c++
1int main() 2{ 3 int a = 0; 4 cout << func(a) << endl; 5 cout << a << endl;//a = 0 6 cout << func2(a) << endl; 7 cout << a << endl;//a = 1 8}
というようにすると、どちらの関数も同じように引数を代入したのに、func2では渡した引数が変更されてしまいます。
これでは、値渡しを意図して引数を渡したのに、帰ってきたときには中身が変わってしまっている、というようなことが起きてしまいます。
func2 を呼び出すときには、 func(&a) と書かれるべきなのではないでしょうか?
また、このような間違いが起こらない方法はないのでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。