[ C/C++ ] 参照について

MayaのAPIでは、引数を参照で渡したり、
逆に参照で値を受け取ることが多い。

参照に関して詳しくはこちらのページを参照しました(ややこしい)。
hajime先輩のブログでもポインタと参照に関してのページを発見しました

参照とポインタの違いがなんとなくわかったので、早速コード書いてみた。
ポインタに関しては以前確認したので、今回は参照のみ。

以下ソースコード。
——————————————————-

#include

// prototype
void swap( int& a, int& b );

// main
int main()
{
  int a = 100;
  int b = 999;

  std::cout << a << ", " << b << std::endl;   swap( a, b );   std::cout << a << ", " << b << std::endl;   return 1; } // swap void swap( int&a, int &b ) {   int tmp = a;   a = b;   b = tmp; } ------------------------------------------------------- 結果は以下の通り↓ 100, 999 999, 100

なるほど。

やれることはポインタと似てるけど、アロー演算子とか使わなくても良い分気楽に使えそう。
hajime先輩の言葉を借りれば、インスタンスコピーってことですね。

異なるスコープの変数に参照やポインタを使う場合は、
その辺しっかりと意識してやらないとダメってことなんだろうな。

じゃないとデータの本体が死んでメモリが破棄されたら(っていう言い方で正しいかは謎だけど)、
ポインタを受けてる変数の方がどこを指すかわかんなくなっちゃう。
そんでそのままそいつ使ったら完全に意図した通りの動きはしないだろうし、
結構バグも見つかりづらそう。。

ポインタとか参照って便利だけど、バグの温床になりやすいってのも納得。

「[ C/C++ ] 参照について」への2件のフィードバック

  1. 書いといてなんだが、ほぼ忘れたw
    参照の方がわかりやすいなと漠然と思った気がする。

    最近はひたすらPythonす。

  2. >hajimeさん
    えーwwもったいない。

    PythonはMayaPythonですかね?
    僕もぼちぼち使って行きたいんですが、なんともMELで事足りることばっかりやってるもんで、、

コメントを残す

メールアドレスが公開されることはありません。