これはMSVCで有効なコードだと思います:
MyClass* pMc = &MyClass();
ただし、プリミティブ データ型で同じことをしようとすると、コンパイル エラーが発生します。
int* pInt = &int();
エラー:
error C2101: '&' on constant
3 つの質問があります。
- なぜ
int()
私に定数を与えるのですか? - そもそもエラーC2101が存在するのはなぜですか? 定数のアドレスを取得することの何が問題になっていますか?
- 一時オブジェクトを指す int (または他のプリミティブ) 参照を宣言する方法はありますか? (つまり、最初にローカル変数を作成せずに)
3番目の質問について:
私はこのようなことをしたくありません:
int i = int();
int* pInt = &i;
ローカル オブジェクトへの参照を使用している場合 (理由は関係ありません)、すべてのオブジェクトを 2 回宣言する必要はありません。それは退屈で面倒で、名前は本当に紛らわしいでしょう。