Accelerated C++

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

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

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 宣言 クラス定義のどこに書いてもか…

Accelerated C++第11章

std::vector に相当する Vec を定義する話。 explicit 引数が一つだけのコンストラクタのみに適用できるもの。明示的にコンストラクタ呼び出しが必要なことを指定するもので、非明示的な変換によるコンストラクタ呼び出しを防止する。詳しくは12章へ。 演…

Accelerated C++第10章

ポインタはランダムアクセス反復子の一種 n 要素の配列 a に対し a + i が有効なのは 0≦i≦n のとき a + i が要素を指すのは 0≦i<n のとき a + n は最後の要素の1つ後(container.end() と同じ) 文字列リテラルとは文字数より1つ大きいサイズの const char…

Accelerated C++第9章

一通り15章まで読んでしまったので、落穂拾い的なメモ constキーワードはメンバ関数の宣言と定義の両方に必要 オブジェクトの状態を変える関数はメンバ関数とする 一般に内部を公開するつもりの小さなデータ構造ならstructを使う クラスオブジェクトの生成…

Accelerated C++ 第8章

反復子 全部で5種類 入力反復子 出力反復子 前方向反復子 双方向反復子 ランダムアクセス反復子 入力反復子 vector<int> v; copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(v)); 出力反復子 copy(v.begin(), ve.end(), ostream_iterator<int>(cout, </int></int></int></int>…

Accelerated C++ 第7章

連想コンテナ awkで慣れてるので特に目新しくはない。 ただ、 連想コンテナの要素はいつもキーに従って配列させられている は知らなかった。 nrand() 他でも使えそう。 課題 省略。

Accelerated C++ 第6章 続き

関数を表すパラメータ定義 慣れてないので気持ち悪いが、明示的にポインタで定義しなくても良い。 アルゴリズムの関数を使い始めると、結構関数(のポインタ)を引数に渡すことが多くなりそう。 課題 本中のソースに関連するもの、面白いくないものはばっさ…

Accelerated C++ 第6章

さらにC++らしく。 ジェネリックアルゴリズム うまく使いこなせるとプログラムの記述量が減るのと、完成までの時間が短くなりそう。 使いこなせるまでが大変そうだけど。 反復子アダプタ 一番使われるらしい、back_inserter を覚えておこう。今日はここま…

Accelerated C++ 第5章

通勤電車の中で読み進めてるので課題ができない状態。TT 反復子 C++らしく(?)なってきた。 以前読んだときは今ひとつなじめなかったが、今回はすんなり入る(ように思う)。 標準ライブラリのコンテナの反復子は2種類 コンテナの型::const_iterator …

Accelerated C++ 第4章

見出しのつけ方をちょっと変更。 constでない参照パラメータ const参照のパラメータが時間的、空間的な効率の点は良いとして、「constでない参照パラメータは左辺値でなければなりません」というのは実装依存だろうか? コンパイラによってエラーにするかど…

Accelerated C++ 第3章 課題残り

3-3 vectorを2個使用して、単語そのものと、出現回数用の2個vectorを使う。でも連想配列(map)を使うのが素直。まだ出てきてないですが。 #include <iostream> #include <string> #include <vector> using std::cin; using std::cout; using std::endl; using std::vector; using std::</vector></string></iostream>…

Accelerated C++ 第3章

vector Cの配列よりは使いやすいコンテナクラス。 サイズに拡張に伴うメモリ割付などを面倒みてくれるが、組み込み機器で使うのはどうなんだろうか。実メモリシステムだとフラグメンテーションが怖い。(といいつつまだ遭遇したことはないわけだけど) 3.2.3…

Accelerated C++ 第2章

このあたりはざっと流して行きたいけど、課題を丁寧にやってると結構時間がかかるな。 ループの不変量(Loop Invariant)、不変な表明 「不変な表明」は、契約による設計への「不変条件」の意味か。 invariantそのものには不変量、不変式の意味があり、おぼろ…

Accelerated C++ 第1章

変数とオブジェジェクト 変数とオブジェクトの違いは重要です。 (中略) 名前のないオブジェクトも作れるからです。 C++はオブジェクト指向言語に類するのだなぉ。 入出力ライブラリのバッファがフラッシュされるケース バッファが一杯になった場合 標準入…

Accelerated C++ 序文

序文で惹かれた文。 詳細を無視できるということは、テクノロジーの成熟に特徴的です。 よくよく読むと、ちょっと日本語が変? ここで言う抽象とは「選択的な無視(selective ignorance)」のことです。 新しいプログラミング言語を学ぶとき、その言語のプロ…

Accelerated C++ 再読開始

ちょっとしたプログラムを書くのに拡張子をcppにしているけど、内容がほとんどCの範囲なので、改めて勉強しなおすことにする。 この本は3年ほど前に一度読んだもの。当時は結構わかった気になった。読み直しにあたっては、ひげぽん氏のルールを借用 知らなか…

Accelerated C++ 第0章

標準ヘッダ C++はヘッダファイルじゃないみたい。実装上は「ファイル」でないこともあるのかな? main関数の戻り値 main関数は特別で、returnを省略することもできる。その場合、mainは0を返すものとして扱われる。 不定かと思ってた。 #include <iostream.h> #include <process.h> </process.h></iostream.h>…