お久しぶりです,星姫です!
今回はC++言語の「これがあるからC++だ!」っていう機能を触ります.
最初はタイトルの「クラス・テンプレートとは何ぞや?」から始めて
最終的に「テンプレートって便利かも!」と納得していただける内容になってます。(…たぶん)
さてさて、シンプルスター先生が社会人になって初めてのレッスンです。
フレッシュに行きましょう、フレッシュに(笑)
では本題に入ります.
前回は、クラスに演算子関数を追加できることを示しました。
クラスについては使い慣れてきたころ?(構造体に関数を持たせることができるモノという理解でOK)
そこに新しく「テンプレート」っていうキーワードが入ります、テンプレートについてまず説明します。
intやdoubleなど、そのほか構造体やクラスといったデータのことを「型」って呼んだりします。
これら無数にある型を一緒くたに扱うとき(そんなこと出来るのか?)、その不定の型
(仮の型)をテンプレートパラメータと呼びます。
使われ方は、関数の引数や戻り値の型としてテンプレートパラメータが書かれます。…とか言われてもわかんないよね。
そこで、書式は以下の通りなので参考に書いてみてください。
main.cpp
このソースプログラムのコンソール出力結果は以下の通りです。
ここで示したのが「関数・テンプレート」です。要は関数の引数の型がが'T'というテンプレートパラメータとなってます。
前にちょいとtemplate
あれ!( 'A' );が65!?
( 'A' );が65で出力される理由を調べると「ASCII文字コード」のキーワードにたどりつくと思います。
ところで、これ( 'A' );なんか顔文字みたいですね。
関数テンプレートである程度機能を確かめたのなら、関数ではなくクラスで書いてみましょう。
ここからが本題、以下に例を示します。
main.cpp
このソースプログラムのコンソール出力結果は以下の通りです。
こんな感じで、様々なデータ型を扱えるクラス「クラス・テンプレート」が実装できます。
どんな型のデータでも処理できるクラス、これはとっても便利です!
さてSTL(標準テンプレートライブラリ)って単語をご存知ですか?
今回はその便利さ、使い勝手の良さを知ってもらおうと思います
ということで、最後はlist(リスト)の使用例をのせて終わりにしたいと思います。
listTest.cpp
このソースプログラムのコンソール出力結果は以下の通りです。
listというキーワードに関連して他にもvectorとか聞きますね。
プログラム言語を覚えたてのころ、配列の操作に戸惑うはず!
そんな悩みを一挙解決してくれるのがSTL
STLを使えるようになってみてはいかが?
使い方に迷ったら、以下のリンク先で調べると良いです。
STLにも9つ種類があり、それぞれが沢山の機能を持っていますので全て覚えてる人はそうはいません。
書式も独特だったりするので、まずは使い方をここで調べるといいですね。
今回習ったクラステンプレートとリストの作りは似ています。というか、多分同じように作られています。
クラステンプレート・演算子関数を駆使すれば作れます。
最近になって初めて作ったのですが、これがまた面白かった。
興味ある方は、ぜひ作ってみましょう。
次はプログラム作成時に役立つツールを紹介したいと思います。
2010/04/18 初記.
2010/04/29 追記.
2010/06/12 追加。