• ベストアンサー

引数を変化させてもよいか

下記のコードを見てください 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); } のようにしなくてはならないという規則はありませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

> このようなfunctionの()の中の値を変化させる使い方はC++として問題はありませんか? C++の文法としては、特に問題無いと思います。 #ただ、ソースの見やすさという点ですと、異論反論などもあるように思いますが。 -- > ~のようにしなくてはならないという規則はありませんか? 指定した引数が関数内で変化しない事を保証するために、constのキーワードを明示的に指定して、 void f1(const int i1); のように宣言されている場合は、前者はエラーになりますので、後者または以下のように処理する必要があります。 void f1(const int i1) {  f2(i1+1); }

sakoichi
質問者

お礼

ありがとうございます。 func(int num) を{}の中で別のintを宣言してnumに代入するコードをいくつか見た記憶があって気になっていましたが、それはfunc(const int num)だったんでしょかねー。

その他の回答 (1)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

>このようなfunctionの()の中の値を変化させる使い方はC++として問題はありませんか? 値渡しの場合は、問題ありません。 呼ばれた関数の中でその値を変更しても、呼び出し側で渡した変数が変更される訳ではありませんので、呼び出された側で、自由に変更してかまいません。

sakoichi
質問者

お礼

問題ないようなので安心しました。 ありがとうございました。

関連するQ&A