1. ホーム
  2. c++

参照からポインタを取得する方法は?

2023-09-08 12:36:25

質問

ポインタと参照について多くの関連する質問があるようですが、私が知りたいことを見つけることができませんでした。基本的に、オブジェクトは参照によって渡されます。

funcA(MyObject &objRef) { ... }

関数内で、参照ではなく、そのオブジェクトへのポインタを取得することはできますか?もし私が参照を扱えば objRef へのエイリアスとして扱います。 MyObject の別名として使用すると &objRef は実際に MyObject へのポインタを与えてくれるのでしょうか?それはありそうもないように思われる。私は混乱しています。

編集:よくよく調べてみると objRef は、私が必要とするオブジェクトへのポインタを返してくれます - ほとんどの人が正しい情報/答えをくれました、ありがとう。 私は、このケースで最も例示的であると思われる答えに従いました。

どのように解決するには?

はい、参照にAddress-of演算子を適用することは、元のオブジェクトのアドレスを取得することと同じです。

#include <iostream>

struct foo {};

void bar( const foo& obj )
{
  std::cout << &obj << std::endl;
}

int main()
{
  foo obj;
  std::cout << &obj << std::endl;
  bar( obj );

  return 0;
}

結果

0x22ff1f
0x22ff1f