プロが教えるわが家の防犯対策術!

クラスをヘッダファイルとソースファイルに分けて書く時、ヘッダ側のメンバ関数に仮引数を書く必要はあるのでしょうか?

参考書などを読むと、両方のファイルに同じように仮引数を宣言してありますが、下記のように型だけ指定しても問題なく実装できてしまいます。

class Tes{
public:
  void Foo(int);
};

また、ヘッダ側の仮引数が実装側の仮引数と異なっても、型さえ同じであればこちらも問題なく実装できます。

これらのことから、仮引数は書かなくてもいいのかなと勝手に思ってるわけなんですが、この方法に何か問題はあるのでしょうか?

A 回答 (1件)

仮引数の型は必要ですが、名前はあっても無くても、関数本体と異なっていてもかまいません。


型が違うと別関数になってしまうので問題があるかもしれません。


ちゃんと意味のある名前で、定義と同じにしておくと
・プロトタイプだけを見て、引数の意味がわかる
・IDEがヒントを表示してくれるかもしれない
・プロトタイプと定義とで同じ意味になっている、ということが確認できる。
というあたりが考えられます。

例)
int hoge(int x,int y) ; // xとyを指定する、ということが、プロトタイプでわかる。
...
// 定義
int hoge(int y,int x) {
//(警告もエラーも出ないけど)プロトタイプと見比べたら逆になっているから
//もしかしたら期待した動作になっていないかも、という予想はできる。
....
}
    • good
    • 0
この回答へのお礼

>>名前はあっても無くても、関数本体と異なっていてもかまいません。
ありがとうございます。おかげでスッキリしました。

>>プロトタイプだけを見て、引数の意味がわかる
確かに可読性を考えると、書いてある方がよさそうですね。
自分でちょろっとプログラムを書くならともかく、規模が大きくなりそうなら仮引数名も書こうと思います。
回答ありがとうございました。

お礼日時:2016/03/21 07:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!