- ベストアンサー
引数を変化させてもよいか
下記のコードを見てください void f1(int i1) { i1++; f2(i1); } void function f2(int i2) { i2++; f3(h2); } main() { f1(345); 引数をインクリメントして次の関数へと渡しています。 このようなfunctionの()の中の値を変化させる使い方はC++として問題はありませんか? 値はintの実体渡しだと限定します。 例えば、 void f1(int i1) { int buf; buf = i1; buf++; f2(buf); } のようにしなくてはならないという規則はありませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> このようなfunctionの()の中の値を変化させる使い方はC++として問題はありませんか? C++の文法としては、特に問題無いと思います。 #ただ、ソースの見やすさという点ですと、異論反論などもあるように思いますが。 -- > ~のようにしなくてはならないという規則はありませんか? 指定した引数が関数内で変化しない事を保証するために、constのキーワードを明示的に指定して、 void f1(const int i1); のように宣言されている場合は、前者はエラーになりますので、後者または以下のように処理する必要があります。 void f1(const int i1) { f2(i1+1); }
その他の回答 (1)
- tatsu99
- ベストアンサー率52% (391/751)
>このようなfunctionの()の中の値を変化させる使い方はC++として問題はありませんか? 値渡しの場合は、問題ありません。 呼ばれた関数の中でその値を変更しても、呼び出し側で渡した変数が変更される訳ではありませんので、呼び出された側で、自由に変更してかまいません。
お礼
問題ないようなので安心しました。 ありがとうございました。
お礼
ありがとうございます。 func(int num) を{}の中で別のintを宣言してnumに代入するコードをいくつか見た記憶があって気になっていましたが、それはfunc(const int num)だったんでしょかねー。