タグ

ブックマーク / www7b.biglobe.ne.jp/~robe (2)

  • ロベールのC++教室 - 第28章 静かなるメンバ -

    今回は新しいクラスを作ります。が、特に意味のないクラスです。ちょっと説明的になってしまいますが、勘弁して下さい(汗)。 なお、数章後にまた CIntArray を改造するので、ソースは残しておくことをおすすめします。 では、今回の要点です。 静的メンバ変数は実体を別に宣言する必要がある。 静的メンバ変数はどれだけクラスを作っても共有される。 では、いってみましょう。 今回はメンバ変数に static を付けてみます。これがどんな意味を持つか、それを確認していきたいと思います。 今回使うクラスはこんな感じです。 // SMember1.cpp #include <iostream.h> class CNum { private: int m_num; public: CNum(int num){ m_num = num; } void Disp() { cout << m_num << en

    iww
    iww 2017/08/02
  • ロベールのC++教室 - 第42章 ダウンキャスト -

    前回に続いて、今回もC++のキャストについて話します。C言語のキャストにはない特別な機能を持ったキャストです。 では、今回の要点です。 dynamic_cast を使えば継承関係をチェックしてくれる。 不当なキャストの時は NULL を返す。 dynamic_cast を利用するには、ランタイムタイプ情報が必要。 では、いってみましょう。 先ずは、前回の CFile と CBinaryFile と CTextFile の話を思いだしてみましょう。CBinaryFile クラスのオブジェクトのアドレスを一旦 CFile* に渡したものを CTextFile* にキャストすると困るというものでした。(ここで、CBinaryFile と CTextFile は CFile の派生クラスです。これらは第2部の継承の話で作ったあのクラスそのものです。) というのも、CBinaryFile ではバイナ

    iww
    iww 2015/08/13
    派生クラスへのダウンキャストはやめよう という話
  • 1