1. ホーム
  2. c++

[解決済み】C++で参照渡しよりポインタ渡しの方がメリットがあるのか?

2022-04-07 02:47:42

質問

C++で参照渡しとポインタ渡しを比較すると、どのような利点がありますか?

最近、関数の引数を参照渡しではなく、ポインタで渡している例をよく見かけます。 これには何かメリットがあるのでしょうか?

func(SPRITE *x);

の呼び出しで

func(&mySprite);

vs.

func(SPRITE &x);

の呼び出しで

func(mySprite);

解決方法は?

ポインタはNULLパラメータを受け取ることができますが、参照パラメータはそうではありません。 もし、オブジェクトを渡せない場合は、参照パラメータではなくポインタを使用してください。

また、ポインタで渡すと、オブジェクトが値で渡されるのか、参照で渡されるのかを呼び出し先で明示的に確認することができます。

// Is mySprite passed by value or by reference?  You can't tell 
// without looking at the definition of func()
func(mySprite);

// func2 passes "by pointer" - no need to look up function definition
func2(&mySprite);