- 2007/10/31 12:28
- 未分類
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先輩の言葉を借りれば、インスタンスコピーってことですね。
異なるスコープの変数に参照やポインタを使う場合は、
その辺しっかりと意識してやらないとダメってことなんだろうな。
じゃないとデータの本体が死んでメモリが破棄されたら(っていう言い方で正しいかは謎だけど)、
ポインタを受けてる変数の方がどこを指すかわかんなくなっちゃう。
そんでそのままそいつ使ったら完全に意図した通りの動きはしないだろうし、
結構バグも見つかりづらそう。。
ポインタとか参照って便利だけど、バグの温床になりやすいってのも納得。
Comments:2
- hajime 2007/10/31
書いといてなんだが、ほぼ忘れたw
参照の方がわかりやすいなと漠然と思った気がする。最近はひたすらPythonす。
- tai 2007/10/31
>hajimeさん
えーwwもったいない。PythonはMayaPythonですかね?
僕もぼちぼち使って行きたいんですが、なんともMELで事足りることばっかりやってるもんで、、
Trackbacks:0
- Trackback URL for this entry
- http://blog.taikomatsu.com/2007/10/31/cc-%e5%8f%82%e7%85%a7%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/trackback/
- Listed below are links to weblogs that reference
- [ C/C++ ] 参照について from memlog