Windows C++プログラミング講座 「型」って何だ?? [ウィンドウズ アプリケーションのプログラミング講]
このページでは、「型」についてお話します。
C++言語には、沢山の型があります。特にウィンドウズアプリケーションの開発を
する場合、コールバック関数などの色々な場面でウィンドウズ独特の型が登場して
慣れないうちは、戸惑ったりします。
そもそも、「型」って何のためにあるかと言いますと
記憶領域の確保
のためにあります。
これは、どういう事かと言いますと、例えば一つの変数を考えて欲しいのですが、
数学の場合の「x」とか「y」とかの変数って、値は自分の頭で覚えていました。
x=5とか…
xは5なんだな…って自分の頭で覚えていたのです。
しかし、プログラムの場合は、そうは行きません。
どこかに覚えておくメモのようなものが必要なんです。
さらに言えば、メモする「事」や「モノ」の「タイプ」と言いますか形式のようなものも
必要なんです。
なぜかと言いますと、ただ単に数値をメモするなら良いのですが、
例えば文章などをメモしておく場合などは、メモできる文字数など、
メモできる場所の大きさをちゃんとしておかないとダメなんです。
x = 5
ならば、変数「x」に「5」と言う値が記憶されますが、
これは、「x」と言う「名前」の変数に「5」と言う「数値」が記憶される事を
意味します。
仮に、「x」と言う名前の「数値」を記憶するためのメモを使いたいときは、
あらかじめ「x」という名前で「数値」を記憶するための「領域」を確保しなければ
ならないのです。
その領域を確保するために必要なのが「型」です。
言い換えれば、「ひな形」って感じなのかもしれません。
「型」が分かれば、確保された領域には「どんな値が記憶されるか」が分かります。
逆に言えば、「型」が指定されれば「どれだけ領域を確保すれば良いのか」が分かります。
そして、「確保された領域にはどんなタイプの値が記憶されるか」も分かるのです。
C++言語の場合、変数を使用する場合は
必ずあらかじめ「変数」を「型」の指定と共に宣言しなければなりません。
この「変数を宣言」する事によって、指定された「型」によって必要な領域が
宣言された「変数の名前」で確保されます。
確保された領域には、「変数の名前」でアクセスする事が出来て、
ちょうど数学の変数と同じ感覚で使用する事が出来るようになります。
C++言語には、「int」型というものがあります。
これは「Integer」の略で「イント型」って私は読んでます。整数という意味です。
「int」型は、整数値を記憶できる領域を確保するための型で、32bit4バイトの
領域が確保されます。
この確保された4バイトの領域は「x」という名前です。
次の行の「x = 5;」は単に「x」に5を代入と理解してもいいのですが、
厳密には、「x」という名前の記憶領域に「5」を記録するという意味です。
そして、この記録された値は、変更されるまでずっと保持されます。
(でも電源切ると消えます)
ウィンドウズのプログラミングでは、独特の型がたくさんあります。
例えば「HWND型」とかです。
これは、32bitで4バイトの整数値で「int型」と同じなんです。
じゃぁ「HWND」なんてややこしい型を使わないで「int型」でいいじゃないか!
と思うかも知れませんが、大規模なプログラムを書いていると分かると思うのですが、
同じタイプの型でも、「何の目的の変数なのか」が分かるようにしておかないと、
結局は混乱してしまうんです。
同じ整数値なのですが、
単なる数値なのか…
ウィンドウへのハンドルなのか…
インスタンスへのポインタなのか…
一体、何を表す「整数値」なのか、「型」によって分かるようになっているんです。
ウィンドウズには、結局は「int型」と同じなのに、わざわざ別の型で表される事が
大変多いです。
でも、それらは全く別物として扱った方が好ましいので、
あまり難しく考えない方が良いと思います。
「int型」は、汎用的に使う変数用で、
「HWND型」は、ウィンドウハンドル。
「LRESULT」は同じ32bit整数値だけどコールバック関数の戻り値。
のように全て32bit整数値だけども、全て用途の違う別物と考えて使用して
目的に応じて使い分けられています。
実際に、コンパイラも別物として扱っているので
間違えると、ちゃんとエラーになってくれます。
そうやって、別の型の変数を間違って使うことを避けて
バグを最小限に抑えるようになっているのです。
C++言語には「型」を自分で作る事ができる機能があるので、
このような事ができるのです。
クラスを使って「型」を作ることもできるし、
構造体も、一つの「型」です。
また、「int型」に「別名」を付けることにより新たに「型」を作ることも出来ます。
こんな風に「CNUM」とかって言う(まぁゲームとかでキャラクタの番号入る数値とか…)
整数値なんだけど、特化した目的で使う数値が入る変数に使ったり…
単に「int型」だと使用目的がわかりにくくなるので別名をつけたりします。
そうやって、型が増えていきます。
ウィンドウズのプログラミングの場合は、あらかじめ定義された型が沢山あって
最初はとっつきにくい部分はあるとは思うのですが、
意外とすぐに慣れてしまう程に使用目的が特化しているので大丈夫だと思います。
理屈を習うよりも慣れてしまったほうが、早いと思いますよ。
コメント 0