C++

公開されている C++11の文法と機能 をKindleファイルへ変換してみた

ここ何年もC++は使ったことがなかったが、偶然 本の虫: C++11参考書の公開:C++11の文法と機能 を発見。 https://github.com/EzoeRyou/cpp-bookで内容が公開されているとのことであるので、kindle.rb の使い方を思い出すのも兼ね、Kindle形式(mobiファイル…

C++再考 第2部 動機

第4章に『クラス製作者のためのチェックリスト』として、クラス設計にあたって考慮すべきポイントがうまくまとめてあります。 コンストラクタは不要ですか データメンバはプライベートですか 引数なしのコンストラクタはありますか 全てのコンストラクタが…

C++再考 第1部 動機

Accelerated C++でも使われてたこの文から始まります。 抽象とは選択的な無視のことです 2.1.2 ソフトウェア工場? 第1部は導入部で事例紹介などがありますが、2章に『2.1.2 ソフトウェア工場?』として ソフトウェア工場の考え方は、物を作るという行為と…

C++再考−アンドリュー・コーニグ

Accelerated C++の著者の本である「C++再考」を読み始める。 書かれた時期が96年と古いため、掲載されているソースコードには一部古さを感じさせる部分(など)もあるけれど、単独でみれば今でも十分読む価値はある。 ただし、現時点ではC++の本も多く、個人…

VC2005のifstremで日本語ファイル名を使用する

C++

普段の「ちょっとしたツール」を使うのに使用する言語をC++で書いているのだけれど、ファイル入出力は手馴れたfopen/fread/fcloseで処理でこなしてました。 昨日やはり数十個のファイルを処理する必要に駆られ、この際だからifstreamで書いてみたところ、漢…

独習デザインパターンC++−テクノロジックアート

C++

以前買ったデザインパターンの本を読み始める。まえがきにあるとおり、C++でプログラムがかかれているため、なかなか良さそう。 第2部から実際のデザインパターンが始まるのだけれど、(当たり前ですが)それぞれの独立性は高いので一日一つといった読み方…

これからどうするか

C++

9月から Accelerated C++ Effective C++第3版 Effective STL Effective C++改訂2版 と読み進めてきたけど、ここからどうするか。 ロベールで包括的な復習 再読による復習 オブジェクト指向へ(Meyer本) デザインパターン(この前買ったやつ) STL/boost…

EffectiveC++改訂2版 46項〜50項

最終章。 46項 結論として、エラーをランタイムに検出するのは、コンパイル時やリンク時に行うよりも、要するに信頼性が劣るということになる。 普段、周りで作っているプログラムは、ランタイムエラーの検出すらできていないケースが多いのが何とも。。 47…

EffectiveC++改訂2版 35項〜44項

6章。 オブジェクト指向は実使用したことがないだけに、概念的な理解しかできていないと思う。今度Meyerの本でじっくり勉強しよう。Smalltalk勉強会もあることだし。。 35項 public継承の肝 public継承は、「その一種である」という関係[英語で言うと"is-a…

EffectiveC++改訂2版 32項〜34項

5章の残り。 32項 変数定義の「場所」についてはC++で書くようになってから「直前」に移動しているが、コンストラクタ、デストラクタのコストについての意識が薄かった。 要点は2つ。 変数の定義は、その変数を使う直前になるまで遅らせるだけでなく、初期…

EffectiveC++改訂2版 29項〜31項

『第5章 クラスと関数:その実装』だけれども既知の事項で復習をしている感じ。自分自身に蓄積ができつつある感触は悪くないですね。 29項 内部データのハンドル(ポインタ、参照)を返すなということ。第3版では、この手のリソースは専用のハンドルクラス…

C++のベースとなるC言語についての覚書

C++

C言語について改めて整理。 規格 K&R ANSI C89: 以降はISOへ ISO C90: ANSI C89と同じ C95: Amendment. ワイドキャラクタの扱い C99 JIS X3010-1993: C90と同じ X3010-2003: C99と同じ Cの起源にまつわるリンク 本家ベル研 Dennis M. Ritchie Chistory Ken T…

EffectiveC++改訂2版 22項〜28項

Smalltalk勉強会に向けての予習のため休んでいたEffectiveC++改訂2版の勉強の再開。 22項 リファレンス渡しは素晴らしいが、独特の複雑さを伴う。特に悪名高いのは17項で説明したエイリアシングの問題である。 これは身に付いている。 23項 アルバートアイン…

EffectiveC++改訂2版 第17項〜第21項

17項 AcceleratedC++でも何度も注意されていた「自己代入」のチェック。ほとんどの場合、this と &rhs の比較で判定すれば良い。 エイリアシングの可能性を考慮しなければいけない理由 効率:代入は非常にコストがかかる操作になる場合がある 安全:間違いを…

EffectiveC++改訂2版 14項〜第16項

第14項 継承で利用する基底クラスの仮想デストラクタの話。AcceleratedC++でもおなじみ。 第15項 代入演算子。これもAcceleratedC++でおなじみ。 よくある間違い operator= の戻り値を void にする operator= の戻り値を const オブジェクトのリファレンスに…

EffectiveC++改訂2版 第9項〜第13項

第9項 メンバ関数の定義による隠蔽の話。50項では継承関係の中での話しだが、ここでは operator new() の話。 第10項 63ページにあるBLOCK_SIZEの定義はなぜか1項では「古い」とされている形式。 かつ、ここの説明での operator delete() の形式も古い形式の…

EffectiveSTL読了

AcceleratedC++ -> Effective C++ -> Effective STL と来て多少はC++らしいプログラムが書けるようになってきたように思うが、なにぶんこのところ記述量が少なすぎて、実感が持てない。

EffectiveC++ 改訂2版を読み始める

本棚に埋もれていた第2版をこれまでの復習を兼ねて読み始める。 第3版に比べ、Cからの移行の章があったりして時代を感じさせますね。こちら側が丁度良い位なのが淋しいですが。 1項から7項 このあたりはすいすい読み進められる。 8項 非メンバ、メンバのnew/…

EffectiveSTLを読み始める

5項で「copyを使いすぎるプログラマが多い」とあるけど、この項の最初の質問に対してはcopyとback_inserterを考えてしまってた。 23項くらいまでぽちぽち読み進める。

Effective C++

C++

一応読了。でも身に付いた感じがしないのは、実際に使ってないからだろうな、たぶん。今度は実際にコードを書きながら復習してみよう。 でもEffective STLも面白そうだし、boost本も。。

unix time と2038年問題

C++

「不正な時刻が悪さをする」ということで聴いてみると、いわゆるunix timeとして正しく扱えないということのよう。ライブラリがエラーを返すらしい。とあるRTOSの開発環境の話であるけれども、手元にコンパイラでどうなるか調べてみました。 Visual C++ 2005…

Effective C++

C++

30項くらいまでパラパラと。 使いこなしのヒントなので、使わないとだめだなと思う。当たり前ですが。 RS232Cで接続された機器とのやりとりを簡単にできるスクリプト言語を作ってみようかな。MS-DOSのころはまだしも、Windowsになってちょっと面倒になった…

Accelerated C++第15章の疑問解消

実装クラス(Pic_base)で、ハンドルクラス(Ptr)をfriend宣言すればOKでした。 cppll_novice MLに感謝。(でもへんな投稿にしてしまった orz)

次は

C++

Effective C++にしよう。

Accelerated C++第15章に対する疑問

p274の訳注*1に疑問あり。 仮想デストラクタをつけたとあるが、仮想になっていない 仮想だろうが、仮想でなかろうが、privateデストラクタなのでコンパイルできない 原文にあたれないけれど、 継承を使い、派生クラスのポインタをdeleteしているので、本来は…

Accelerated C++第16章

2005年に続いて、2回目読了。 お言葉 本棚に本を置いても、プログラマの腕は上がらない もっと学ぼう プログラミング言語C++ 第3版 STLによる汎用プログミング C++再考 本棚をざっと見るとC++関連では ロベールのC++入門講座 ロベール プログラミング…

Accelerated C++第15章

文字絵の例でインタフェースと実装の分離、実装部分のカプセル化について説明している。実装部分のカプセル化については、コンストラクタなどをprivateにすることで隠しているわけだが、その分多くのfriendが必要になってしまってて、正直そこまでのカプセル…

Accelerated C++第14章

お言葉 2つの独立した抽象クラスであるべきものを1つのクラスにするということは、しばしばデザインの弱さを示しているのです。 ハンドル オブジェクトへのポインタを保持する ハンドルが結び付けられているオブジェクトの型とは独立している ポインタと同…

Accelerated C++第13章

初歩的なハンドルクラスが出てきて面白くなってきた。 派生クラスのオブジェクトの生成 派生クラスのメンバも基底クラスのメンバも同様に全オブジェクトの分のメモリを確保 基底クラスのコンストラクタを実行し、オブジェクトの基底クラス部分を初期化する …

Accelerated C++第12章

3のルールの変形 一般に、デストラクタが必要でないクラスでは、コピーコンストラクタと代入演算子もわざわざ書く必要はない メンバ関数にすべきものとそうでないもの 入力、出力演算子ははメンバ関数にできない friend 宣言 クラス定義のどこに書いてもか…