2009-08-03から1日間の記事一覧

フレンド関数

C++

http://www.geocities.jp/ky_webid/cpp/language/022.html前回のフレンドクラスに引き続き、今回はフレンド関数の話です。考え方は同じです。クラス全体ではなく、関数単位でフレンド化が可能となります。やってみましょう。 #include <iostream> using namespace std;</iostream>…

22章 フレンドクラス

C++

http://www.geocities.jp/ky_webid/cpp/language/022.htmlなんかまたワケの分からない物が出てきました。 フレンドクラスの指定には、friendキーワードを使うのですが、どちら側のクラスの定義に記述するのかに注意して下さい。「自身のクラスのメンバに自由…

asmキーワード

C++

http://www.geocities.jp/ky_webid/cpp/language/021.htmlインラインアセンブラというらしいです。これは正直アセンブラの書き方等わかって無いのでとりあえず今はこういうキーワードがあるということだけ押さえておきます。

inline関数

C++

http://www.geocities.jp/ky_webid/cpp/language/021.htmlこれは第10章のときにも少し言及がありましたね。inlineとはつまりマクロ展開のようなものです。インライン化された関数は呼び出された場所に展開されます。ただ色々と条件があるようで、あまりに長…

21章 C++で追加されたキーワード一覧

C++

http://www.geocities.jp/ky_webid/cpp/language/021.htmlこれは良いですね。表で見てみるとかなり追加されたんだなということが良くわかります。 キーワード 概要 bool trueかfalseとなる論理値 true 真を表す論理値 false 偽を表す論理値 namespace 名前空…

mutable指定子

C++

http://www.geocities.jp/ky_webid/cpp/language/020.htmlconstメンバ関数に絡んで、mutable指定子というものが存在します。コレは結構ニッチですね。constメンバ関数によってメンバ変数が変更されないということを保証するわけですが、mutable付のメンバ変…

constメンバ関数と、非constメンバ関数のオーバーロード

C++

http://www.geocities.jp/ky_webid/cpp/language/020.htmlここは元記事をじっくりしっかり読むのが重要です。とりあえず一度に沢山のことは覚えられないのでまず、戻り値がconst型についてはとりあえず置いておいて、constメンバ関数と、非constメンバ関数で…

constメンバ関数

C++

http://www.geocities.jp/ky_webid/cpp/language/020.htmlconstメンバ関数についてです。メンバ関数をconstにするというのがどういう意味なのか良く分からないですよね。これは今までのconstとはちょっと違った仕様になります。まずは書き方を見てみましょう…

constメンバ変数を含むオブジェクトの代入

C++

実は前回の記事で書いたプログラムをコンパイルすると下記のような警告が出ていました。 main.cpp main.cpp(9) : warning C4512: 'CSample' : 代入演算子を生成できません。 main.cpp(4) : 'CSample' の宣言を確認してください。最初なんのことか分からなか…

20章 constメンバ変数の初期化

C++

http://www.geocities.jp/ky_webid/cpp/language/020.htmlC++のconstには状況よって様々な効果があるので少しややこしいです。とりあえずひとつずつ理解していきたいと思います。まずはC言語的なconstについてですが、これは単にその変数、もしくはその変数…

explicit

C++

http://www.geocities.jp/ky_webid/cpp/language/024.htmlキャスト絡みでもうひとつ。explicitについてです。これはクラスのコンストラクタを宣言する際に使うことができます。まずはexplicitの前に以下の実装を見てください。 #include <iostream> using namespace st</iostream>…

reinterpret_cast

C++

http://www.geocities.jp/ky_webid/cpp/language/024.htmlreinterpret_castというキャストが出てきました。これなんて読むんでしょうか。りいんたーぷれっと?日本語読みは再解釈キャストというらしいです。異なる型同士へのキャストを行えるようです。C言語…

const_cast

C++

http://www.geocities.jp/ky_webid/cpp/language/024.htmlこれは単純です。名前の通り、constを無効化するためのキャストです。一応volatileも無効化されるみたいなのですがもともとあまり使わないと思うのでまあ知っておいてね程度で良しとします。実際に書…

static_cast

C++

http://www.geocities.jp/ky_webid/cpp/language/024.htmlごくごく一般的なキャストを提供する。静的キャストともいいます。また、dynamic_castは動的キャストともいいます。でこのstatic_castでどんなキャストができるかですか、C言語のキャストと同じよう…

参照のダウンキャスト

C++

http://www.geocities.jp/ky_webid/cpp/language/024.htmlポインタ変数じゃなく、参照の場合もダウンキャストすることが可能です。ただしエラー処理のやり方がちょっと違うので注意が必要です。 #include <iostream> using namespace std; class CBase { public: virtu</iostream>…

ダウンキャスト

C++

http://www.geocities.jp/ky_webid/cpp/language/024.htmlダウンキャストの話です。ダウンキャストは、継承関係の上から下へ向かうキャストです。基底クラスから派生クラスへのキャストになります。とにかく実際の処理を見てみましょう。 #include <iostream> using na</iostream>…

24章 アップキャスト

C++

http://www.geocities.jp/ky_webid/cpp/language/024.htmlさあて、怖そうな章に辿り着きました。恐怖のキャストです。ちゃんと理解できるでしょうか・・・。まずはアップキャストについてです。 アップキャストは、継承関係の下から上へ向かうキャストです。…

23章 実行時型情報 RTTI

C++

http://www.geocities.jp/ky_webid/cpp/language/023.htmlなんか名前はややこしそうですが、内容はそうでもないです。RTTIとはRun-Time Type Identificationの略であり、実行時型情報といいます。あるポインタ変数が、何の型なのかを取得することができます…