16-14クラスのメンバ変数の配列の要素数を可変長にするテクニックの話です。配列の要素を一つだけで宣言しておきます。16-02メンバ変数に匿名共用体を用いれば、メモリを共有するメンバ変数を定義できます。13-17メンバ関数のポインタは以前勉強しました。実はメンバ変数もポインタを取ることができます。(void*)Pないとにて勉強しました。13-13テンプレートの特殊化にはクラス宣言で特殊化する方法と、実体定義で特殊化する方法があります。(void*)Pないとにて勉強しました。後者は今回勉強する内容になります。13-11前回のusingの応用です。13-04引数有りのコンストラクタを持つクラスを仮想継承し、それを多重継承した場合のお話です。以下の例を見てみましょう。13-08例えば以下のような多重継承の関係のクラスがあるとします。暗黙のキャストは思わぬバグを引き起こしてしまう可能性もあります。そのため、引数が一つになる可能性のあるコンストラクタがあれば、コピーコンストラクタを除いて、とりあえずはexplicitをつけておいたほうが無難です。11-11グローバルな演算子のオーバーロードをするときに、その対象のクラスのプライベートな変数や関数が見えたほうが良いケースがあります。11-03シングルトンクラスというものに関して言及がありました。10-05例外が発生して関数を抜ける前に何かしらの後処理がしたい場合、以下のように例外の再送出を使います。10-08コンストラクタの初期化子で発生した例外をキャッチする方法として関数tryブロックというものがあります。おいて、動作の違いはまったくないそうです。古いコンパイラではtypenameだと対応していない可能性があるらしいです。08-13namespaceを名前無しで定義すると無名の名前空間になります。して定義されたi変数はスコープがファイル内(ブロック内ではないことに注意)に限られます。08-13namespaceによる名前空間の別名を定義することができます。(void*)Pないとの続きです。09-08前にテンプレートの勉強をした時に疑問に思ってた部分ですが、ロベール本で少し言及がありました。実は関数テンプレートのテンプレート引数の場合はデフォルト引数をとることができません。09-07タイトルがちょっとわかり辛いですが、例を見ればすぐわかると思います。以下の処理を見てください。09-03ロベール本ではテンプレートの実装はヘッダに書かなければならないとさらりと書かれていましたが、何故そうしないといけないのかが本を読むだけでは今一良くわからなかったので色々調べてみたところ、理由がわかりました。08-09fstreamクラスを使ってのバイナリモードでファイルの読み込みをやってみます。08-08生データをバイナリモードで出力する場合、環境によってデータのバイトの並びが昇順になったり降順になったりするそうです。このバイトの並びのことをバイトオーダーと呼びます。08-08C言語のときにもやりましたね。C++ではfstreamで同様のことが可能です。08-09ファイルのコピーを実装します。08-03文字列をcoutやcinのような扱い方と同じように扱えるようにしたのがstringstreamクラスです。使用例を見てみましょう。08-01stringクラスはその文字列の長さを自前で管理しているため、ヌルターミネーターを使わなくても問題ない。それどころからヌルターミネーターを一つの文字列として認識することさえ可能である。07-09仮想関数テーブルという内部実装の話。ある仮想関数を呼ぼうとしたときに、実際にどの関数が呼ばれるのかという情報が書き込まれた表のこと。クラスの隠しメンバ変数にその情報を持っているのでクラスのサイズが増える。08-04ファイルの読み書きはC言語のときに色々やりましたが、C++ではまだ殆どやってませんでした。Cのようにfopen等で同じような実装もできるのですが、折角なのでC++特有のファイルの読み書きの方法を勉強したいと思います。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。