2008-01-01から1年間の記事一覧

shared_ptrの実装6

C++

ここまでのまとめ shared_ptrでは参照カウンタの管理、インスタンスの管理が完全に隠蔽されている。 可能なこと shared_ptr pimplイディオム(不完全型クラスを使った宣言) 暗黙のアップキャスト deleterによる削除 未実装 weak_ptrへの変換 適当なクラス図…

shared_ptrまとめ

日本語ドキュメントshared_ptr、weak_ptr boost勉強会http://www.ustream.tv/recorded/2981654 Smart Pointer Programming Techniques 実装してみた shared_ptrの実装1 - while( c++ ); shared_ptrの実装2 - while( c++ ); shared_ptrの実装3 - while( c++ )…

shared_ptrの実装5

C++

shared_ptrで任意のインスタンスをdeleteする 前回のshared_ptrの実装4 - while( c++ );で shared_ptr< void > a( new int( 100 ) ); とすると、デストラクタで正しくdeleteされません。今日はこれを解決しましょう。問題になっているのは delete void*; で…

shared_ptrの実装4

C++

前回の続き 一応スマートポインタらしく動作するshared_ptr風のクラスができましたが、何かダサいですね。美しくない。boost::shared_ptrと比較すると、全くの別物であることがわかります。参照カウンタなどの内部の実装がそのまま見えてしまっているのはよ…

shared_ptrの実装3

C++

前回の続き では、実際に参照カウンタ式のスマートポインタを作ってみましょう。 参照カウンタを追加 たとえば以下のような場合、new intの実体と参照数が共有されるので、参照カウンタも動的に作らないといけませんね。 shared_ptr< int > a( new int( 100 …

shared_ptrの実装2

C++

前回の続き smart_ptr< int > a( new int( 1 ) ); smart_ptr< int > b = a; このようにスマートポインタをコピーコンストラクタでそのままコピーすると、メンバのptrがそのままコピーされるので、new intで生成した実体を指すポインタが2つできてしまいます…

shared_ptrの実装1

C++

boostといえばスマートポインタ。 C言語からC++に移るときに最も感動したものがスマートポインタだったと思います。 スコープから抜けるときに誰からも参照されなくなったオブジェクトを自動的にdeleteしてくれるポインタクラスですね。 class Hoge{ ... }; …

reinventing the wheel

C++

現在C++の勉強のためにboostを自分で実装してます。「四角い車輪の再発明」にならないよう気をつけます。 参考にしているサイト boost本家 Kazuhiro Inaba Let's Boost Faith and Brave - C++で遊ぼう p_stade;

xbox360

トータル20時間程度しか触ってないxbox360が故障しました。。。 急にDVDドライブからガリガリ音がして、「読み取れません。布で拭いてください、再起動してください」的なエラーメッセージ。ちなみにソフトはラストレムナントです。 ほかのソフト(とい…

なんとなく日記を。

基本的にプログラム系のネタです。 最近はtemplateにハマってます。 C++大好きです。 C++は「しーぷら」と呼んでます。デフォではないようですね。