- ベストアンサー
クラスのアドレスを引数として渡したい
関数の引数として,クラスのアドレスを渡すにはどうしたら良いですか. void func(MyClass mc) { mc = ~ } としたとき,これは参照渡しとなっているのですか? それとも値渡しとなっているのですか? もし値渡しとなっているのでしたら,クラスの場合 どのようにすれば参照渡しにできるのでしょうか. よろしくお願いします.
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下3通りです。 ・値渡し void func(MyClass mc) ・参照渡し void func(MyClass &mc) ・アドレス渡し void func(MyClass *mc)
その他の回答 (2)
- jacta
- ベストアンサー率26% (845/3158)
回答No.3
C++では、クラスはオブジェクトではありませんのでアドレスはありません。 クラス型のオブジェクトのアドレスであれば、 void func(MyClass* mc) { *mc = ~ } とすることができます。 なお、MyClass&とした場合が参照渡しですが、これはアドレスを渡しているわけではありません(処理系&文脈によっては、コンパイル結果がアドレス渡しになることはありますが、それはまた別の話です)。
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
C++ では, いかなる場合においても「仮引数に & があれば参照渡し」だし「なければ値渡し」です. これは組み込み型でもクラス型でも同じであり, 「クラスの場合」に特別な何かがあるわけではありません.