私は初心者なので、ルールを超えてしまったらお詫びします。これが私の質問です。
コードブロックでGCCコンパイラを使用していますが、特定のコードスニペットで気付いた独特のことがあります。誰かがこれに光を当てることができることを願っています。
int main()
{
Tree *t;
//some operations on the tree
traverse();// No parameter is passed here.
...
}
void traverse(Tree *t)
{
..
}
次のコードでは、関数traverse()が正しく実行されます。私の質問はなぜですか?これについてはよくわかりませんが、関数が宣言されていない場合、デフォルトの型はintになります。これで、コンパイラはコンパイル時のエラーを抑制しただけでなく、パラメータ't'を関数traverse()に正しく提供しました。
これはインテリジェントなコンパイラ設計によるものですか?
したがって、一般的に、私が持っている質問は、コンパイラがまだ宣言されていないメソッドに遭遇した場合、コンパイラはデフォルトでどのような動作をするのかということです。さらに重要なのは、どのパラメーターを渡したいかをどのように「知る」のでしょうか。
ご存知のとおり、「Tree *」のインスタンスは、t1、t2、t3の3つでした。その場合、コンパイラはどちらを渡しますか?
私はグーグルで周りを見回してみましたが、決定的な情報源をまだ見つけていません。
お時間をいただきありがとうございます。:)