C言語とC++入門勉強ルーム
【日本赤十字社】東北関東大震災義援金を受け付けます
2008年06月20日
STL(Standard Template Library)は、コンテナ(リスト、配列など)とアルゴリズムを中心とするC++のライブラリです。 STLを用いることで、二重リンクリスト(双方向リンクリスト)や動的配列のコーディングが楽になりま...
日時: 2008年06月20日 12:39
2008年06月19日
テンプレートは、クラスにも利用できます。 関数テンプレートと同じような使い方です。 #include <cstdlib> #include <iostream> // 足し算のクラス template<ty...
日時: 2008年06月19日 22:08
C++のテンプレート - C言語とC++入門勉強ルームで、紹介した大きいほうの値を返す関数maxですと、Cの文字列の比較が行えません。 Cの文字列は・・・ const char *name = "Tom"; と、文字ポインタ「char *」...
日時: 2008年06月19日 21:34
C++のテンプレート機能は、汎用的な関数を定義するために使われます。 テンプレートから関数個別のインスタンスを生成し、オーバーロードした関数のように扱うことができます。 template宣言での定義の仕方は、パラメータつきのマクロ定義のやり...
日時: 2008年06月19日 21:27
include <assert.h> とあるように、自作するモジュールのヘッダファイルの拡張子は、「.h」とします。 ヘッダファイルとは、モジュール間で共有する情報を記述したファイルとなります。 ヘッダファイルに書く具体的な内容...
日時: 2008年06月19日 15:11
staticキーワードは、C++のプログラミングではよく出てきます。 モジュールプログラミングにおいては、変数や関数が有効となる範囲をファイル内にとどめて、そのファイルに対してローカル(プライベート)にしたい場合に用います。 グローバルに定...
日時: 2008年06月19日 14:36
モジュールを制作する場合は、ファイルを分割しますから、複数のファイルをまたがって共通する変数を使ったり、別ファイルで定義してある変数を使いたい場面があります。 externキーワードで変数や関数を宣言すると、別ファイルで定義してある変数や関...
日時: 2008年06月19日 13:52
これまでのほとんどのプログラムでは、一番最初の部分に・・・ include <iostream> include <assert.h> などとヘッダファイルをインクルードしてきました。 これらは、汎用化された機能が定...
日時: 2008年06月19日 13:36
C++のクラス定義・クラスでのスタック実装 - C言語とC++入門勉強ルームでは、エラー処理としてassertを利用していましたが、これをtry~catch文に変更してみます。 assertによるエラー処理は・・・ assert((coun...
日時: 2008年06月19日 00:14
2008年06月18日
例外処理としてのtry~catch文を使うことができます。 try { // 例外が発生する可能性のある処理 } catch (hoge_err& err) { // throwされた例外をcatchした時の処理 }...
日時: 2008年06月18日 23:49
コンストラクタ・デストラクタの呼び出し順 派生クラスのコンストラクタ、デストラクタがどのように呼び出されるか確認します。 #include <iostream> class base { public: // con...
日時: 2008年06月18日 20:49
派生クラスで隠蔽される関数の例を見てみます。 #include <iostream> class parent { public: int calc(int a, int b) { return (a + b); }...
日時: 2008年06月18日 19:21
基底クラスparentを継承する派生クラスchild_a, child_bがあり、さらにchild_a, child_b両方を継承するgrandクラスの定義を考えてみます。 #include <iostream> class...
日時: 2008年06月18日 18:49
virtualキーワードで仮想関数を宣言し、必ず子クラスでオーバーライドしなければならない指定が可能です。 以下のように書くと、必ず子クラスでのオーバーライドが必須となります。 class parent { public: virt...
日時: 2008年06月18日 18:21
virtualキーワードを指定することで、オーバーライドするメンバ関数を区別することができます。 例を見たほうが簡単です。 #include <iostream> class parent { public: voi...
日時: 2008年06月18日 17:28
スタックを実装したクラスを拡張する - C言語とC++入門勉強ルームで、例に出したstackクラスを固定サイズでなく、サイズを動的に変更できるようにします。 動的にメモリを確保するには、new演算子を用いて、インスタンス生成時に配列のサイズ...
日時: 2008年06月18日 16:08
前のページで、スタックを実装したクラスを拡張する例を確認しました。 この時、親クラスstackのメンバ変数、メンバ関数には、それぞれprivate, protected, publicという3つのアクセス制限のためのキーワードを使い分けてい...
日時: 2008年06月18日 15:19
C++のクラス定義・クラスでのスタック実装 - C言語とC++入門勉強ルームで書いた、スタックを扱うクラスを少し改良し、子クラスで機能を拡張させてみます。 継承する子クラスで拡張する機能は、以下の2つの機能を拡張します。 1.2つの要素をい...
日時: 2008年06月18日 14:39
クラスを用いたプログラミングには、クラスを継承することで機能を拡張したり、機能を分割できる、というメリットがあります。 親クラスは、継承する元となるクラスで、基底クラス、スーパークラスなどとも言います。 子クラスは、派生クラス、サブクラスな...
日時: 2008年06月18日 13:57
リンクリストの場合、要素を検索したり追加する際に、目的とする要素を1つずつ確認する必要があるため時間がかかります。 ツリーというデータ型を使用すると、比較の回数を減らせ速度アップとなります。 ツリーはノードから構成され、先頭のノードがルート...
日時: 2008年06月18日 00:14
2008年06月17日
二重リンクリストは、next_ptr(次の要素を指すポインタ)と、もう1つprev_ptr(前の要素を指すポインタ)を持ちます。 シングルリンクリストは、リンクリスト - C言語とC++入門勉強ルームに書いたとおりですので、これを改造した二...
日時: 2008年06月17日 22:54
リンクリスト - C言語とC++入門勉強ルームでは、リンクリストの先頭に要素を追加する方法を考えました。 次は、リンクリストの途中の指定した箇所へと、要素を追加する方法です。 リンクリストが3つの要素からなり、数が小さいほうから大きいほうへ...
日時: 2008年06月17日 22:24
リンクリストとは、配列よりもより柔軟なデータ構造です。 各項目が次の項目をポイントするという風に、項目が数珠繋ぎになったデータ構造のことを指します。 リンクリストのデータ構造をクラス宣言で表すと・・・ #include <iostre...
日時: 2008年06月17日 18:34
new演算子がヒープ領域からメモリを割り当てるのに対し、delete演算子はメモリをヒープ領域に解放します。 通常のオブジェクトの場合 delete ポインタ; ポインタ = NULL; newで配列を割り当てた場合 delete [] ポ...
日時: 2008年06月17日 13:14
以下のような、profクラスの配列を作成しようとすると、メモリを静的に割り当てることになり領域を使いすぎてしまいます。 そこで、動的にメモリ割り当てを行うために、new演算子を用いてオブジェクト生成を行います。 演算子newは、変数を格納す...
日時: 2008年06月17日 13:08
これまでと同じ方法でポインタを宣言するには、ポイント先に名前つきの変数を用意して、ポインタを使用します。 int value; int *value_ptr; value_ptr = &value; この場合のvalue_ptrは、...
日時: 2008年06月17日 10:28
2008年06月16日
加算 2.5 + 0.3 の場合 +2.500E+0 +3.000E-1 2つの数値は上記の状態となり、保護桁が一桁追加される。 保護桁とは、計算の誤差が小さくなるために、仮数部に追加される桁のことです。 +2.5000E+0 +3.000...
日時: 2008年06月16日 19:55
浮動小数点型は、小数点以下の部分を持つ数値を表す型です。 float 単精度浮動小数点数 double 倍精度浮動小数点数 long double long型の倍精度浮動小数点数 浮動小数点数は、大きさと精度で表現される...
日時: 2008年06月16日 19:27
私は、このブログでのC++のコード作成と実行に、Microsoft Visual C++を使っています。 使い方で、まだいまいち分からないのが、デバッグの手順なのですが、今のところ必要ないので勉強しないでおく。 必要になったら学習するために...
日時: 2008年06月16日 19:00
演算子オーバーロードの実験として、小数点以下1桁にそろえて乗算の計算結果を返すクラスを作ってみました。 #include <iostream> #include <assert.h> #include <std...
日時: 2008年06月16日 16:46
アーカイブ(過去の記事一覧)