私はしばらくの間 C++ でプログラミングを行ってきましたが、自分を専門家とは呼べません。この質問は、私が抱えている実際の問題を解決するために尋ねられているのではなく、C++ が何をしているかを理解することに関するものです。
単一のパラメーターを期待する関数があるとします。
void doSomething(SomeClass& ref)
{
// do something interesting
}
(注: パラメータは SomeClass への参照です) 次に、次のように関数を呼び出します。
int main(int argc, char *argv[])
{
SomeClass a;
doSomething(a);
}
なぜこれは正当な C++ なのですか? 関数は SomeClass への参照を想定していますが、静的に割り当てられた SomeClass 型の変数を渡しています。参照はポインタのようなものですよね?参照をポインターに置き換えると、コンパイラーは文句を言います。このように参照がポインターと異なるのはなぜですか?舞台裏で何が起こっているのでしょうか?
これがばかげた質問でしたら申し訳ありません。