ロベールのC++入門講座

p691〜pまで

だいぶ間が開きましたが、続きのテンプレートの特殊化から。 テンプレートの特殊化 ・テンプレートの特殊化とは型ごとにテンプレートの定義を変更すること。 ・特殊化をすると完全に型が決まってしまうので、実装はヘッダファイルに記述することができない。…

p685〜p690まで

さてさて、以前やったテンプレートの補足事項がここででてきました。 http://d.hatena.ne.jp/niso1985/20080505/1209998856 http://d.hatena.ne.jp/niso1985/20080506/1210086809 テンプレート引数 テンプレート引数にはtypename以外も取れるよっていうお話…

p668〜p684まで

フレンド ・特定のクラスのオブジェクトの生成をあるクラスに一手に任せたい場合には有用。 ・ただし、本当に必要なときにのみ使うようにすること。 まぁ基本的には使わない方針ですね。デバッグ用クラスとか使うとしたらその辺りのみですね。 不完全型 これ…

p655〜p667まで

土日サボってた。あうあう。 インタフェースクラス 仮想継承を使ったインタフェースクラスは作ったことなかった。というか、仮想継承の存在を忘れていたわけで。 ・インタフェースクラスを仮想継承すれば、どんなに複雑な多重継承を行っても継承されたすべて…

p640〜p654まで

昨日(http://d.hatena.ne.jp/niso1985/20080514/1210774822)がっつり間違えた菱形継承。本日はそれを実装するための仮想継承について。 仮想継承 ・同じクラスを複数継承した場合、そのすべてにインスタンスが作られる。もし、一つのインスタンスを複数で共…

p632〜p639まで

ついに13章。多分この章が一番アツい。 多重継承 多重継承を扱う場合、一番大本の基底クラスを一次クラス、それを継承したクラスを二次クラス、さらにその二次クラス同士を継承したクラスを三次クラスとして話を進めます。 コード的にはこんな感じ。(各Hoge…

p599〜p629まで

今日からマクロ。C++じゃあんま使わないほうがいいっぽいけどどうなんだろ。まぁ適材適所ですか。Cでもあんまり使ったことなかったからこの際しっかり身につけとこう。 あと今日から引用表記を使うことにした。これで改行位置気にしなくていいぽ。 マクロの…

p566〜p598まで

ビット演算周り ここらへんはさくっといける。一応あとで引きやすいようにまとめだけやっとこう。 ・論理積は特定のビットを取り出すときに使う ・論理和はビット合成に使う ・排他的論理和は特定のビットを反転させるのに使う ・論理否定は論理積と組み合わ…

p539〜p564まで

昨日はなんだかんだで遊んでしまった。反省。しかし今日はなぜかやる気がでない。 参照を返す関数 ・privateメンバの参照を返す関数でprivateメンバの参照を得てほしくないときは、 そのメンバをあるクラスにしてラッピングするといいかもしれない。 こんな…

p512〜p538まで

お次は静的メンバについて。あと、そのほかもいけるところまでやっとくか。 静的メンバ変数 知らなかったこと、よく間違えることをつらつらと ・実体定義を行うほうにはstaticをつけない。(よく間違う) ・デフォルト引数に指定可能 ・必ず0で初期化される。(…

p503〜p510まで

とりあえず残りの例外部分でまとめとく。 標準例外クラス 実は例外クラスは標準でいろいろと用意されているので、それを継承して利用すると吉。 標準例外クラスは最基底クラスにexceptionクラスを持つ。このクラスではプロトタイプ宣言の後にthrow();という…

p476〜p502まで

やっとこさ折り返し。うーん、少しペースが遅いか・・・。 goto文 goto文は初期化を伴う変数宣言を飛び越えることができない。 ラベルの後には必ず何らかの文が必要。 p480 ここだけ抑えとけばいいかな。あとは理解してるはず。使わんけど。 例外 うーんうー…

p458〜p473まで

今日はクラステンプレート。 クラステンプレート うわ、この書き方知らんかった。 template <typename T> class Hoge { Hoge(); }; template <typename T> Hoge<T>::Hoge() { // do something... } いっつも宣言と定義一緒に書いてたぜ・・・。同一ファイルならこれで宣言と実装分けてか</t></typename></typename>…

p442〜p457まで

なんか今日は疲れてるんでちょっとだけ。勉強は毎日続けることが肝心だ。 関数テンプレート 昔、テンプレート引数をあるオブジェクト型のポインタにしようとして、テンプレート引数の参照はHoge*&になんのか?とか思って頭を抱えたことがある。まぁ普通にテ…

p391〜p440まで

バイナリモードとテキストモード バイナリモードとテキストモードの違いは改行コードの取り扱いについてだけ。 p392:下段 テキストモードでは自動的に改行コードを環境に合わせて変換してくれる。 p392:中段 これは知らなかったかもしれない。バイナリモード…

p372〜p384まで

どうやらこれからiostream周りの解説になるらしい。あんまりC++の標準ライブラリは使ったことないのでこれからはサンプルコードをできるだけうって身につけていくようにする。 サンプル実行環境 まず、それにともなって、今回の勉強のはじめの時点で書いてい…

p385〜p390まで

ちょっと前のやつは長くなったので分離。 ファイル操作の基本 書き込み C++でファイルを扱う場合はcstdioかfstreamに含まれている機能を使用する。今回はfstream。しかし、Cに比べて簡単だこれ。Cはいちいちファイルポインタ使ってうんたらかんたらしないと…

p346〜p369まで

昨日は送別会だったので1日あいてしまった。 コンストラクタ、デストラクタの呼び出し順 基底クラスから順にコンストラクタが呼ばれる 派生クラスから順にデストラクタが呼ばれる p346:要点 知ってたけど、これも微妙に認識が甘いと思ってメモ。それがなぜ…

p314〜p345まで

今回はクラスの基本的な機能の解説。 継承 アクセス指定子をprivateにすれば基底クラスではpublicだったメンバも 派生クラスにおいてはすべてprivateになる。 また、アクセス指定子を省略するとprivateになる。 p321:下段 基本的にprivate継承、protected継…

p270〜p312まで

クラス!ざざっと! 引数つきコンストラクタ これは知らんかった・・・。 // Integerクラスを定義済み Integer array[4] = { Integer(), Integer(3), Integer(6), }; p283:クラス配列の初期化おれ、今までどうやってクラス配列初期化してきたんだろう・・・…

p258〜p268まで

今日はnew/delete。 new/delete newで確保できるメモリのある領域を正式にはフリーストアと呼ぶ。 ヒープとは実は別のものを指す用語。 実用上はヒープでも問題ないかな? メモリが確保できないときはnewがbad_alloc例外を返す。 このとき例外を捕まえなけれ…

p240〜p258まで

分割コンパイル これ知らなかったなぁ。 配列のサイズ指定などにconst定数を使っていた場合、 その値がどんな値かわからなければならないため、 const定数は自動的に内部リンケージとなる。 Cだとconst定数は外部リンケージになるらしい。確かに配列のサイズ…

p223〜p239まで

今日はもうこんな時間だけどちょっと勉強しときます。 静的ローカル変数 知ってたけど忘れてたものの一つ。 静的変数は初期化されなければ0で初期化される。 ついつい癖で明示的に0で初期化しちゃいます。お、新しい関数発見。fill_n()。ちょっと使ってみよ…

p196〜p222まで

配列の配列 配列の配列を初期化する際に、配列のサイズを省略できるのは最初の部分だけ。 int n[][5] = { // うんたらかんたら }; 構造体 メモリ上に存在している、ある型の変数のことを、その型の「実体(インスタンス)」といいます。 また、構造体は意味の…

p156〜p196まで

次はポインタ周りじゃー! ポインタと配列 配列を関数に引数として渡す場合、これでいけるのはしらなかった。 void func(int array[]); int main() { char n[10]; func(n); } 関数内でのarrayの使い方は普通のポインタと同じように使える。要するに、上のfun…

p91〜p153まで

do-while 正直1回も使ったことない。とりあえず書式メモ。 do{ // do something... }while(if...); // ここにセミコロンが入る。 ビットとバイト これまたいろんなところで言われてるけど、sizeof演算子を変数に対して使う場合、()は不要。一応メモ。 signed…

p73〜p90まで

ううー、もう12時やん。あと20分や!時間がほしい。 条件分岐 筆者もif文には括弧をとりあえずつけておく派か。自分と同じだ。 そういや、大学のときにやった離散数学はもうちょっと勉強しといたほうがよさそうだなぁ。なんとなくベン図をみながらそう思った…

p61〜p72まで

久々に再開。別にさぼってたわけじゃないですよ、ええ。しかし、今日もあんまり時間がないなぁ。 関数 p63: 関数の名前も使える文字は変数と一緒。 あと、他の人のブログでもよく書かれているけど、仮引数がparameterで実引数がargument。ほんとこれどこから…

はじめから〜2-2(p61)まで

本がでかいので、ちょっとおれの机ではエントリ書きながらコード書きながら本読みながらってのは難しい・・・。 気になったことをここにメモっていこう。 1章 とりあえず1章はざっくりと目を通す。 まぁーここらへんは大丈夫っと。 2章 2章の1の要点 変数名…

とりあえずロベールのC++入門始める前に

今回はVC2005でやろうと思ってるんですが、(本当はEmacs使いたいけど、デバック環境どんなの使えばいいかわからないなんていえない><)なんか毎回プロジェクト作り直すのもめんどくさいんで、ファイル追加していく形で入門プロジェクトを作ろうかと思った。…