C++ 基礎からマスターまで — 第4回
関数とは何ですか? 2話
本ブログ作成文は、講義を目指して製作されました。 また、作成された文章の情報も間違っている可能性がありますので、ご注意ください。
この記事では、基本的な関数の使い方についてさらに学びましょう。
#include <iostream>
void function1(){
std::cout << "function1!" << std::endl;
}
int main(){
function1();
function2();
return 0;
}
void function2(){
std::cout << "function2!" << std::endl;
}
そのコードはコンパイルされません。 コンパイラによって異なりますが、 main.cpp:9:5: error: ‘function2’ was not declared in this scope; というエラーが浮かんだのを見ることができる。
私たちの目にfunction2が宣言されているのに、なぜコンピュータは知らないのか? C言語とほとんどのプログラミング言語はコードを上から読みます。 つまり、対応するコードはコンピュータにこのコマンドを発行します。
function1の宣言を読み込み、function1をメモリ上に作成します。 main関数が実行され、function1とfunction2が実行されます。 function2の宣言を読み込み、function2をメモリ上に作成します。 (Name Lookupの失敗については後で確認してください。)
人間が読んでも何かおかしくないのか?
function2が宣言される前にmainで実行されようとすると、コンパイルエラーが発生しました。
#include <iostream>
void function1(){
std::cout << "function1!" << std::endl;
}
void function2(){
std::cout << "function2!" << std::endl;
}
int main(){
function1();
function2();
return 0;
}
したがって、このコードはエラーを引き起こさないと予想されます。
または、関数の型だけをコンパイラに事前に通知する宣言をmain関数の上に作成し、 実際の動作を入れた実装はmain関数の下に作成する方法がある。
#include <iostream>
void function1();
void function2();
int main(){
function1();
function2();
return 0;
}
void function1(){
std::cout << "function1!" << std::endl;
}
void function2(){
std::cout << "function2!" << std::endl;
}