次のコードはコンパイルされて実行されますが、私は下位レベルで正確に何が起こっているのか分かりません。参照は参照されているオブジェクトのアドレスを格納するだけではありませんか?その場合、両方のテスト関数がパラメータとしてアドレスを受け取っていますか?あるいは、C++の実装は、これらの型を別の方法で区別することができますか?あなたが関数にint&
を渡しており、それはint&
とint*
ようint*
次の場合、関数のオーバーロードはどのように機能しますか?
1
A
答えて
7
に変換することができないためだけchar test(int&i)
と一致コーディング
int main() {
int i = 1;
cout << test(i) << endl;
}
char test(int &i) {
return 'a';
}
char test(int *i) {
return 'b';
}
1
は異なるタイプであり、i
はint&
として扱うことができるが、 int*
ではなく、ここでは過負荷解決は絶対に明白です。
この時点では、参照はちょっと隠された種類のポインタにすぎません。言語の観点から見ると、それらは異なるタイプです。
2
C++での参照は、ポインタよりもエイリアスに似ています。参照はそれ自身では別個の変数ではありませんが、既存の変数の新しい「名前」です。あなたの例では、関数に整数を渡すので、最初のテストが呼び出されます。ポインタは、別の変数のアドレスを保持する別の変数です。したがって、2番目の関数を呼び出すには、ポインタを使ってtestを呼び出す必要があります。そうですね... test(&i);
&は、&で宣言された変数がint &i
のような参照を宣言している間に、演算子を混乱させるようなものは変数のアドレスを取得します。
関連する問題
- 1. 次の関数定義はどのように機能しますか?
- 2. jQuery pushStack関数はどのように機能しますか?
- 3. Listの場合、Scalaのequalsメソッドはどのように機能しますか?
- 4. 関数が値を返さない場合、Jasmineはどのように機能しますか?
- 5. 演算子[]のオーバーロードはどのように機能しますか?
- 6. Pythonのselectモジュールのselect()関数はどのように機能しますか?
- 7. Spring統合:RendezvousChannelはどのように機能しますか?
- 8. dropbox.comの複数のファイルアップロード機能はどのように機能しますか?
- 9. この正規化関数はどのように機能しますか?
- 10. jQueryのnoConflict関数はどのように機能しますか?
- 11. このフィオナッチ関数はどのように機能しますか?
- 12. このPython関数コードはどのように機能しますか?
- 13. Processingのmap()関数はどのように機能しますか?
- 14. Node.jsの継承関数はどのように機能しますか?
- 15. OpenCVライブラリのFindContours関数はどのように機能しますか?
- 16. 関数は実際にMATLABでどのように機能しますか?
- 17. 複数のSqlDataSourceはどのように機能しますか?
- 18. id == 1の場合、次のjQueryコードは機能しません。
- 19. 再帰的パルミトム関数はどのように機能しますか?
- 20. Rで `[< - `関数はどのように機能しますか?
- 21. 数式はJavaでどのように機能しますか?
- 22. Ocaml変数スコープはどのように機能しますか?
- 23. Pythonでは、次のAutoVivificationクラスはどのように機能しますか?
- 24. ループ内の関数(別の関数を返す)はどのように機能しますか?
- 25. Cの次のセマフォアプリケーションはどのように機能しますか?
- 26. 関数はLispでC#のようにオーバーロードされますか?
- 27. gen_serverモジュールでcode_change()関数がどのように機能しますか?
- 28. 多次元配列のカスタムソート関数はどのように機能するのですか
- 29. 次のChrome拡張機能のjavascriptコードスニペットはどのように機能しますか?
- 30. 関数アプリケーションがtypeclassの場合はどうなりますか?
ああこれは私には明らかなことです –