Skip to Content
Effective Modern C++ ―C++11/14プログラムを進化させる42項目
book

Effective Modern C++ ―C++11/14プログラムを進化させる42項目

by Scott Meyers, 千住 治郎
September 2015
Intermediate to advanced
364 pages
10h 33m
Japanese
O'Reilly Japan, Inc.
Content preview from Effective Modern C++ ―C++11/14プログラムを進化させる42項目
138
4 章 スマートポインタ
ドを指すポインタが不正になり、子ノードが不正ポインタを辿る危険性はないのです。
もちろん、ポインタを基にしたデータ構造のすべてが厳密な階層をとる訳ではありませんので、
キャッシュ機能や observer のリストを実装するなどの場合に備え、std::weak_ptr が使用できる
と覚えておくと良いでしょう。
効率性の観点から言えば、std::weak_ptr について言えることはすべて std::shared_ptr と本
質的に同じです。std::weak_ptr オブジェクトのサイズは std::shared_ptr と同じですし、使用
するコントロールブロックも同じです(項目 19 を参照)。また、コンストラクト、デストラクト、代
入などの演算がアトミックなレファレンスカウント操作を伴う点も変わりません。本項目の冒頭で
std::weak_ptr はレファレンスカウントに関与しないと述べたので、この点は意外に聞こえるかも
しれません。しかし意味が異なります。著者が述べたことは、std::weak_ptr はオブジェクトの
同所有権shared ownership)に関与しない、そのため対象オブジェクトのレファレンスカウント
pointed-to object’s reference count)には影響しない、です。実際にはコントロールブロック内に
レファレンスカウントがもう 1 つ存在し、この 2 番目のレファレンスカウントこそ std::weak_ptr ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

C++ High Performance - Second Edition

C++ High Performance - Second Edition

Björn Andrist, Viktor Sehr

Publisher Resources

ISBN: 9784873117362Other