////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2001 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com

    送信日： 2001/10/15(Mon) No.128
    配信数： 3750 ( Mag2 + Pubzine )
＊    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*            ２００１年１０月１５日（月）の更新                  */
http://www.kab-studio.com/

・ホットハーブ追加！
　４コママンガ三人合体ホットハーブに２話追加します（汗）。運が良けれ
ば３話。っつーかもっとペース上げないと〜。
[ 三人合体ホットハーブ ]
http://www.kab-studio.com/Comic/HotHerb/


////////////////////////////////////////////////////////////////////
/*                        チョー普通な日記                        */
http://www.kab-studio.com/nikki2/

2001/10/07 (Sun)
　朝は 3X3EYES 買ったりビデオ見たり。そして毎日イラスト計画。どうし
ようかなーと迷いつつ「今日の一枚」スタート。目指せ毎日更新。アニメは
ヴァンドレッドが秀逸。

2001/10/08 (Mon)
　洗濯して昼寝してぷらとわ書いて。イラスト描いて。ラーメンズってやっ
ぱ芸術家肌なんですねー。ちょっとポトリスに注目。今はまだだけど……。

2001/10/09 (Tue)
　「死にそうになったプロジェクト」復帰、でも待ち状態。今のうちにコー
ド追っておく。帰ったらイラストとか。バジル姉さんは難しい……。番組の
時刻変更、なんでホームページに反映されないかなー。「のの」論。日本語
的に変？

2001/10/10 (Wed)
　９時まで残業〜。簡単なデバッグと思いきや、作り直しを含む大幅改変が
必要に(泣)。範囲が分かってるからか、それほどきつくはないけど……。そ
して久々のツッコミは新エディタ、ソース付き。時間のあるうちに好きなだ
けプログラミングをしましょー。

2001/10/11 (Thu)
　今日は８時半上がり。このくらいならなんとか？　仕事はあまり進まず。
C++ に慣れすぎて、元々用意されてる C プログラムの修正、ってことが強
い制約に。アニメはシュガーとフルバがいい感じ。

2001/10/12 (Fri)
　この日の日記は土曜に書いてます。前日は徹ゲー。 DOA2 いい感じ。お仕
事、自分の実力のなさに辟易。制約があるとはいえ、簡単なことが実現でき
ないなんて……。んでも７時半に上がって徹ゲー。明日は休みだけどあさっ
ては会社〜。

2001/10/13 (Sat)
　徹ゲーして寝て洗濯してカレー作って買い物行ってアニメ見てサイト回っ
て。 PS2 と一緒に何を買おうか。アニメ系ではやっぱヴァンドレッド？　
Ｎスペでワークシェアリング。あこがれます。 SE だって可能なはずだし。
っつーかわざと仕事作ってるような……。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
http://www.kab-studio.com/Novel/Fuga/

■　第二章　青年ふたり　−８−

　舞を始めとする面々が、ぞろぞろと雅樹の部屋から出ていく。そして最後
に雅樹が出て、鍵を掛ける。
　ふと見ると、俊雄は不思議なものを見るような顔をしていた。
「どうしたの？」
「え、あ、うん……静かだなと思って」
　そう、静かだった。
　それぞれの部屋には、まるで生活感が感じられない。ドアは硬く閉ざされ
カーテンは閉め切られている。元々、家族で住むような部屋はあまりないと
はいえ、その静けさは俊雄には奇妙に感じられた。
　「口」の形をしたマンションの中央にある吹き抜けを通して、無数のドア
を見ることができる。このドアの列を見ることができるのは、ここの住人か
その知り合いだけだ。それは、ひとつのグループとも思える。
　なのに、ここにあるのは冷たい静けさだけだった。
「そう……ね」
　吹き抜けを、人工庭園のある一階から頭上に見える空の出口へと風が駆け
抜けていく。その冷たい風は、舞に「碧き泉」、かつて居た場所を思い出さ
せた。
「まーい！」
　恭子がエレベーターから呼ぶ。舞は、なんか気が乗らない自分を感じてい
た。
　力無く歩いていく舞の背中を、俊雄は見る。そして、その後へと付いてい
く。
　異質なものは、生理的に拒否される。「恐怖」という名のハードルが、視
界を遮る。たった一方向だけの視界を。たった一人に向けた視界を。
　狭いエレベーターに五人入れば、やはりそれだけで窮屈になる。登ってき
たときに中庭を覗くことができた窓の側に、雅樹が立つ。
　俊雄は、サッカーをしているから、体は大きい。けれども、雅樹の比では
ない。身長も、肩幅も、何もかも違う、もう生まれた時から違うんじゃない
か、そう思わせる体つきをしていた。
　しかし、そのラフな服装が、単純な印象を与えさせない。いちばん近いイ
メージで言えば、一昔前のアメリカにいそうな若者のような感じに見える。
が、それはあくまで外見であって、見た瞬間に受ける印象はまた違う。いつ
もひょうひょうとし、笑顔が多いのに、たびたび見せる静かな表情が非常に
大人びて見える。
　想像できない年輪の深さを、感じさせる瞬間があった。
　今もそう、恭子、信吾、俊雄が狭い空間の中で話をする。そのぽっかりと
空いた空間を挟んで、舞は雅樹を見る。雅樹は優しい顔をして、横を向いて
いる。色の濃い、ひげをうっすらと生やした、無造作で軟らかそうな男っぽ
い唇が、かすかに動く。
　その雅樹の視線の先に、おそらく穂香がいるのだろう。見えているのだろ
う。
　まるで街でたまたま見かけた自分の恋人が道路を挟んで知らない女性と話
をしている姿を見るようにして、舞はその視線を送っていた。
　と、そんなことを思ってばかばかしいと思う。
　でも……。
　雅樹の影に隠れるようにある縦長の窓、そこから入り込む光が雅樹の唇を
照らしては陰らせて、その陰影をただただ見続けていたいと思う自分が不思
議だった。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
「お達しが来ました。 Java メルマガの宣伝しろって」
『なんか久しぶりね』
「やっぱり宣伝はしなきゃってことじゃないかな」
『そりゃそうね……えっと、次は第４号、１０月１７日配信、３日後ね』
「タイトルは〈クラスとインスタンス〉」
『クラスは知ってるし、インスタンスも聞いたことあるけど』
「前に教えたのとはちょっと違う意味なんだよね。クラスもそう」
『え、いつものクラスと違うの！？』
「同じだけど見方が違う、ってとこかな。クラスで変数作るでしょ」
『うん作る』
「その変数がインスタンス。で、クラスは作らなくていい」
『始めからあるもんね』
「この差が重要、ってとこかな」
『それって C++ でも関係あること？』
「うん、まんま同じのがあるよ。いつか教えるからねー」
http://www.kab-studio.com/Programing/JavaOOP/
_______________________________________________________________[KCM]


////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.com/Programing/PragmaTwice/

　Version 7.08
コンストラクタで初期化

「今回は〈クラス〉について少し深く見てみましょう」
『うん、クラスっていろんな機能があって、使えるけどよく分かんない感
じ』
「 C++ 言語を使う上での最初の目標は、必要最低限のことを踏まえたクラ
スをさくっと作れることかな」
『……クラスを作る？』
「そ。今は到底無理とか思うでしょ」
『っつーか絶対無理』
「でもいつかはできるようになるから。ま、そのためにはこつこつ勉強しな
いとね」
『はいはい。で、今日は？』
「今日はクラスの便利な機能について。まずはコンストラクタ」
『コンストラクタってやったよ？　Ver 5.17 ( No.082 ) で』
「そう、クラスを作る時に関数を呼べるんです。それがクラス。あのとき
は」

    std::istrstream cStrStrm( chAllLine, dwReadedSize );

『そうそうそんな感じ。 chAllLine って配列から数字とか取り出すのに使
うんだよね』
「そう。で、ここで大事なのは〈初期化〉ってこと」
『しょきか？　それって最初の準備することだよね』
「そうそう。 std::istrstream の機能を使うためには、整数とかを取り出
すための文字配列がなきゃいけないでしょ。その準備をすることが初期化」
『つまり、コンストラクタ＝初期化、なんだっけ？』
「そゆこと。クラスを使うためにはその準備、つまり初期化をしなきゃいけ
ない、その初期化をする専用のメンバ関数が、コンストラクタ」
『それを上のは呼んでるってわけね』
「でも実は、自動的にコンストラクタが呼ばれてたりするんです」
『自動的？』
「まずは、クラスじゃない例から」

void CAnimeDlg::OnBDraw() 
{
    HWND hWnd;
    TRACE( "%X\n", hWnd );
    // CCCCCCCC
}

『？？？』
「 hWnd って変数を作って、で、中身に何も入れないでその中身を表示した
だけ」
『そうすると CCCCCCCC ってなるの？』
「っていうか、元々そうっていうか。そうだ」

void CAnimeDlg::OnBDraw() 
{
    HWND hWnd;
    TRACE( "%X, %X\n", hWnd, &hWnd );
    // CCCCCCCC, 64F544
}

「ってやって、久々にメモリの中身見てみようか」
『なんか久しぶり。 TRACE の次の行でブレークポイント置いて、実行して
そこで止めて』
「【表示】−【デバッグ ウィンドウ】−【メモリ】でメモリウィンドウを
表示して、上の欄に 0x0064F544 って入れてリターン」

0064F544 CC CC CC CC AC FC 64 00 84 F5 64 00 9C 74 43 5F EC F7 64 00

『これがメモリの中身なんだよね』
「で、 HWND hWnd したら 0x0064F544 から４マス分確保してるわけ」
『この辺は Ver 4.02 ( No.052 ) とかでやったから分かるかなー』
「で、変数ってのはメモリの場所を取るだけだから」
『そっか、だから上の CC CC CC CC がそのまま hWnd の中に残ってるか
ら、 CCCCCCCC って出ちゃったんだ』
「そゆこと。もちろん、このままじゃ使えないし、この状態で使うとまずい
んだよね」
『そこで初期化？』
「そゆこと。たとえば」

void CAnimeDlg::OnBDraw() 
{
    HWND hWnd = NULL;
}

「これも初期化」
『ただ NULL 入れてるだけだけどね』
「でも、無茶苦茶な値じゃないから、 if( hWnd == NULL ) ってすれば」
『初期化されたままかどうかが分かるわけね』
「で、この初期化を代わりにしてくれるのが、コンストラクタ」

void CAnimeDlg::OnBDraw() 
{
    CWnd cWnd;
    TRACE( "%d\n", cWnd.m_hWnd );
    // 0
}

『あ、 0 になってる！』
「これは、 CWnd のコンストラクタが m_hWnd = NULL を代わりにしてくれ
てるってこと」
『でも関数呼んでるって感じじゃないね。これがさっき言ってた〈自動的に
呼ばれる〉っていうのなんだ』
「そう、この〈自動的に呼ばれるクラス〉を【デフォルトコンストラクタ】
って言います」
『でふぉるとこんすとらくた』
「そ。デフォルトっていうのは」
『最初の状態とかそういうのだよね』
「そうそう。何はともあれ必要なコンストラクタってことだね。って言って
も、これも自分でクラスを作る時には自分で用意しないといけないんだけど
ね」
『ってことは、自動的に m_hWnd = NULL ってならないんだ』
「だって、 NULL 以外の値にしたいときだってあるわけでしょ」
『そりゃそうだ』
「で、ちなみにその CWnd のコンストラクタは」

（ Wincore.cpp より抜粋）
CWnd::CWnd()
{
    AFX_ZERO_INIT_OBJECT(CCmdTarget);
}
（抜粋ここまで）

「コンストラクタのメンバ関数名は、クラスと同じ」
『ホントだ同じだ』
「でも cWnd.CWnd() とか呼べないからね」
『げ、呼べないの？』
「そう、呼べないの。これは〈クラス名と同じメンバ関数は、コンストラク
タ〉って憶えるしかないかな」
『ないんだ』
「まー、 C++ 言語が悪いって言えば悪いんだけどね。あと、戻り値もない
から」
『あ、ホントだ。変数作る時に呼ぶから、いらないってこと？』
「そういうことだね」
『そういえば、 m_hWnd = NULL ってしてないけど、それしてるのが
AFX_ZERO_INIT_OBJECT() なんだ。全部大文字だからマクロ？』
「そう、このマクロで初期化してるんだけど……ちょっと難しいし、行儀悪
いことしてるからこれはパス」
『はいはい、いつものことねー』
「で、コンストラクタのまとめ。まず、変数は初期化しなきゃいけない」
『しないとメモリにあるのそのまま』
「その初期化をしてくれるメンバ関数が、クラスのコンストラクタ」
『メンバ関数っぽく呼ぶのと、何もしないで呼ばれるデフォルトのがある、
と』
「でもそのコンストラクタもちゃんと作られてて、そういう初期化の機能が
入ってないと意味がない、ってところかな」
『でも普通のクラスは初期化されてるんでしょ？』
「うーん、そうとも言い切れないかなー。たとえば CRect 」

void CAnimeDlg::OnBDraw() 
{
    CRect cRect;
    TRACE( "%d\n", cRect.left );
    // -858993460
}

『げ！　初期化されてない！』
「実際に CRect のコンストラクタを見てみましょう。あ、探してみて」
『はーい。えっと、【ファイルから検索】だよね。で、 CWnd::CWnd() と同
じになるってことは CRect::CRect() が CRect のコンストラクタ？』
「そうそう」
『じゃ、これで検索っと。あった』

（ Afxwin1.inl より抜粋）
_AFXWIN_INLINE CRect::CRect()
    { /* random filled */ }
（抜粋ここまで）

『…… "random filled" って、つまりでたらめってことよね』
「そうなんだよねー。なんでこういう仕様にしてるかはちょっと不明」
『わざわざクラスにしてるんだからすればいいのに、初期化』
「うん、そう思う。 MFC ってこういう部分もあるからねー」
『あるからねーって』
「そう、これ大事」
『……何が？』
「 MFC だって人が作ったもの、ミスがあったりよく分かんない部分があっ
たり」
『でもそれ、いいわけにしかなんないじゃん』
「もちろん。そして、いつかそう言われるかもしんない立場に火美ちゃんが
なるかもしんない」
『……え”！　つまりあたしが作ったクラスがそういうふうに批判されるっ
てこと！？』
「ま、そゆこと。 MFC だけじゃなく、世の中にはいろんなライブラリが
あって、いろんなクラスがあります。火美ちゃんも、いつかはそういうのの
仲間入りをするかもしれないわけ」
『なんかすごい話……』
「逆、逆。そういうのってすごそうに見えても、実はそうじゃないってこ
と」
『つまり、いつかはあたしが作れるもんなんだから、たいそうなもんじゃな
い？』
「心構えだけでもそう思っとかないと、そこまで辿り着けないよ？」
『なんかへっぽこな精神論に聞こえる……』
「まーね。たとえば」

void CAnimeDlg::OnBDraw() 
{
    CRect cRect;
    ::GetWindowRect( GetSafeHwnd(), cRect );
    TRACE
        ( "%d, %d, %d, %d\n"
        , cRect.left, cRect.top
        , cRect.right, cRect.bottom );
}

『 Ver 7.08 ( No.127 ) のと同じ？　……あ、 cRect に & 付いてない』
「でも」
『ビルドできちゃう！？　ちゃんと結果同じ！？？　なんでぇ！？』
「というわけで次回に続く！」

/*
    Preview Next Story!
*/
『？　「まーね、たとえば」ってどうつながるの？』
「これ、不思議な機能でしょ」
『アドレスじゃないのに通るなんて……』
「精神論だけじゃだめ、こういうのもちゃんと仕組みを知ってないとね」
『勉強もちゃんとしろ、と』
「そゆこと」
『というわけで次回』
＜ Version 7.09 演算子のオーバーロード ＞
「につづく！」
『結局医者と同じ、優しいだけじゃダメ、腕も立たないとね』
「わかってるじゃなーい！」
『はい！？？』


////////////////////////////////////////////////////////////////////
/*            ２００１年１０月２２日（月）の更新予定              */
http://www.kab-studio.com/

更新なし。
　情報技術者試験休みって事で（爆）。


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.com/nikki2/
・購読登録を解除したいときにはこのページで行なってください。
＊http://www.mag2.com/m/0000012198.htm
＊http://www.pubzine.com/detail.asp?id=000590
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.com/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.com/Info/MailMagazine/

    (C)KAB-studio 1999 - 2001 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/
////////////////////////////////////////////////////////////////////




