独習C++ pp.1-179
- 作者: ハーバート・シルト,神林靖,トップスタジオ
- 出版社/メーカー: 翔泳社
- 発売日: 2002/11
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 112回
- この商品を含むブログ (54件) を見る
独習C++読んでいます.人生5度目くらいのC++入門.過去4回挫折.「plain Cがあればいいモンね」そう思っていた時期も俺にはありました.
今までことごとく挫折してきたC++入門だけれど,今回はなんか違った.ここ1年くらいCでコードを書くようにしてきたし,低レイヤーのこともブラックボックスにしないで理解しようと努めた結果かもしれない.いずれにせよ,今まで「うー」となっていたことがすんなり理解できた.
独習C++を途中まで一気読み.C++における参照の存在意義がよくわかっていなかったのですが,参照返しを見て少し納得.オブジェクトを値渡しすると,コピーコンストラクタが必要になる話とか,へぇーと思うものが多かった.
サンプルコードが多いので独習C++はものすごく理解しやすい.と今日は思った (昔は思わなかった).
メモ
- #include
- clock_t start = clock();
- clock_t end = clock();
- (end - start) / CLOCKS_PER_SEC;
- 無名共用体
- 構造体メンバはデフォルトですべて公開
- C++では構造体のタグ名が型名になる
- inline関数
- 自動インライン化
- クラス定義内で関数を定義すると自動インライン化される
- インライン関数の条件が満たされない場合,通常の関数としてコンパイル
- オブジェクトの代入
- デフォルトでは全てのデータメンバがビット単位でコピーされる
- myclass o1, o2;
- o1.set(4,6); o2.set(4,9);
- o2 = o1;
- デフォルトでは全てのデータメンバがビット単位でコピーされる
- 関数呼び出しで使用するオブジェクトのコピーを作成する際には,コンストラクタ関数は呼び出されない
- 関数が終了してオブジェクトコピーが破棄される際には,デストラクタ関数が呼び出される
- gccなどのコンパイラによっては,関数を呼ぶ側と呼ばれる側で二重にオブジェクトを複製することがある
- フレンド関数
- クラスメンバではないけれど,クラスの非公開メンバにアクセスできる
- クラスメンバではないので,クラス名で修飾する必要なし
- newとdelete
- newはcstdlibをインクルードする必要ない
- コンパイラによって失敗した際の挙動が異なる
- 参照返し
- 参照返しすることによって代入分の左辺で関数を使用することができる
- int x;
- int &f() { return x; }
- f() = 100;
- 参照返しはスコープに注意
- 安全配列
- 参照返しすることによって代入分の左辺で関数を使用することができる
- 独立参照
- int x; int &ref = x;
- x = 10; ref = 10; // 同じ
- 使うことはないけれど,覚えておく
- コピーコンストラクタ
- オブジェクトのコピーが作成されたときに呼び出される関数
- classname (const classname &obj) { }
- array(const array &a);
- デフォルト引数
- 1つデフォルト引数を指定したら,残りの仮引数にもデフォルト引数を指定