閉じる

_com_ptr_tと operator &

_com_ptr_tは _COM_SMARTPTR_TYPEDEFと組み合わせて便利に使っているのだけど、初期化の際に生のポインタと同じように &演算子が使えるのを不思議に思ってはいた。*1
思ってはいたけど、基本的に初期化時にしか &演算子は使わないので気にしないでいた。
で、その実体はと言うと…&演算子を呼び出した時点で保持しているオブジェクトを開放する*2 仕様でした。
ちょっと怖い仕様だとは思うけど、生のポインタと同じ使い勝手を実現する現実解としてはこういう実装になるんだろうな。


*1 ポインタ値を上書きされたらリソースリークになってしまうのではないかと

*2 要は Releaseが呼ばれる。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)