::Hikaru's blog

調べたこと, 考えたことをメモ.
<< August 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>

スポンサーサイト

一定期間更新がないため広告を表示しています

- | permalink | - | -
<< Visual StudioでFontLinkを有効にする | main | 不完全型のdelete >>

auto_ptr_ref

auto_ptr_refは、右辺値のauto_ptrをコピーできるようにするための中間型です。

例えば、
auto_ptr<foo> create_foo()
{
return auto_ptr<foo>(new foo);
}
void func1()
{
auto_ptr<foo> pfoo = create_foo();
}

func1では、create_fooによって作られる一時オブジェクト(右辺値)をpfooへコピーしますが、auto_ptrには右辺値を受け取れる(const参照を引数に持つ)コピーコンストラクタは定義されていません。
(const auto_ptrにもかかわらず、コピーによって所有権が移動してしまうため)

しかしauto_ptrには、auto_ptr_refを引数に持つコンストラクタと、auto_ptr_refへの変換演算子が定義されているので、暗黙の型変換によりコピーが可能なわけです。
C, C++ | permalink | comments(1) | trackbacks(0)

スポンサーサイト

- | permalink | - | -

この記事に対するコメント

ややこしい話だけに、なんかわかりにくいなぁ。。。w
auto_ptr_refが突然登場するあたりも。
akihiro | 2007/10/05 2:53 PM
コメントする









この記事のトラックバックURL
http://hikarukaru.jugem.cc/trackback/98
この記事に対するトラックバック