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

    KAB-studio.h


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

    送信日： 2003/09/01(Mon) No.222
    配信数： 2850 ( Mag2 + Pubzine )
＊    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine ( URL: http://www.pubzine.com/  ID: 590 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                ２００３年９月１日（月）の更新                  */
http://www.kab-studio.biz/index.html

・KAB-studio.ROM 通販……頓挫（爆）
　夏コミにて販売した KAB-studio.ROM C64 のダウンロード販売ですが、さ
くっと頓挫しました。ごめんなさい、完全なミスです……詳細は詳細等につ
いては下記のページをご覧ください。
[ KAB-studio.ROM C64 ダウンロード版について ]
http://www.kab-studio.biz/Info/Product/C64/KAB_studio_ROM.html#ADD

・９月表紙壁紙！！
　なんかかなり久しぶりですが新しい表紙壁紙です！
　今回はいつもとちょっと変えてみました。つか時間掛かりました。でもそ
れほどって感じなのはなぜ（泣）。ダウンロードは CG Gallery にて。
[ CG Gallry ]
http://www.kab-studio.biz/CG/Gallery/index.html

・ほとはー１話追加！
　三人合体ホットハーブに１話追加。築地の家はなんと……。
[ 三人合体ホットハーブ ]
http://www.kab-studio.biz/Comic/HotHerb/index.html


////////////////////////////////////////////////////////////////////
/*                        ちょお普通な日記                        */
http://www.kab-studio.biz/nikki2/index.html

2003/08/24 (Sun)
　えらい眠い。 KAB-studio.ROM の準備。ひとつ５００円。表紙壁紙をどう
しよう。今日の一枚は火美ちゃん。ほとはー６話は築地の家の話。謎なコラ
ボレーションだ……。

2003/08/25 (Mon)
　お仕事はドキュメント書き。Ｓテープ売ってたとこが……。電脳もの。ほ
とはーのヒット数。

2003/08/26 (Tue)
　さらにドキュメント書き。詳細設計書を書いてからプログラム作り。今日
の一枚はスクミズ深衣奈。難しい……。ふもっふ忘れる。

2003/08/27 (Wed)
　とらのあな様に断られる。仕事も散々。あうう。今日の一枚はありさ。
ぱにぽにいい感じだ。変な性格。

2003/08/28 (Thu)
　４つのお仕事を平行に。 Integer の罠今日の一枚はしーぽん。ウイイレ
はアナログスティックが要？

2003/08/29 (Fri)
　お仕事はドキュメント書き。初詳細設計書。代引専用ラベル。ほとはー夏
コミ版を通販します。一冊５００円のうちわけ。ウイイレ対戦で結構勝つ。

2003/08/30 (Sat)
　ほとはー描いて、ツッコミシステムのバージョンアップして、デジタル
マーケットに KAB-studio.ROM を登録して、９月表紙壁紙を描き始めて。い
ろんな方法を試さないと。テレビはふもっふとすてプリがいい感じ。日テレ
で阪神戦？


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

■　第八章　朱と碧　−１０−

「赤葉様、舞はどうだった？」
　朱き泉、炎が燃えさかる中に雅樹と赤葉が立つ。
「朴とはだいぶ違うな」
「あいつは不死じゃないしな。ずっと泉を受け継ぐ者は俺みたいになるもん
だと思ってたんだが、そうでもないらしい」
「なんだ、信じておらんかったのか？　以前、泉を継いだ者の話をしただろ
う」
「悪いが信じてなかった。昔は……そんな余裕なかったんだ」
　目を伏せる雅樹。赤葉も憂う。
「そうだな……あの娘には、余裕がある。覚悟がある。だからか、強い芯が
見て取れる。時代が違う、環境が違う、何もかも違う」
「芯、か……俺は昔」
「昔の話などどうでも良い。もう済んだことだ」
「ああ……ん、穂香が『感じられた』って言ってる。え……？」
　雅樹は周りを見回す。
「マジかよ……」
「どうした？」
「その龍脈ってのが、地球全体を包んでるんだとよ」
「当たり前だろう」
「あ、当たり前って」
「陰陽思想の元は中国だからな。日本に限った話ではない」
「じゃあ……なんで、日本だけなんだ？」
「む……」
　その問いに赤葉は答えられない。
「柊は？」
「……ああ……えっと、龍脈には地域ごとに温度差があって、特に日本が熱
くなってる、って言ってる」
「温度差？」
「実際に熱いんじゃないんだろうけど……時期的なものじゃないか、とのこ
とだ。長い時間を掛けて、その温度差が変わっていって……ちょうど今年、
日本が爆発するんじゃないかって……あーわりぃ、穂香は爆発なんて言って
ないから」
「ちょうど日本が、か……」
　それは本当に偶然なのかと、赤葉は呪うように思った。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『ひっさしぶりの、表紙壁紙〜！』
「ひさびさだね」
『最近ビジュアル的に出番少なかったし！』
「……」
『ん、どうしたの？』
「残念ですが、悲しいおしらせがあります」
『？』
「ようこそページがなくなるらしいよ」
『え”』
「また減っちゃうね」
『水希ちゃんも減っちゃうんだよ！』
「僕はそういうキャラじゃないし」
『う”』
http://www.kab-studio.biz/Info/Intro/index.html
_______________________________________________________________[KCM]

////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 11.22
CString の注意点

「今回は、 CString を使う上での注意点について説明します」
『注意点？　なんかすごく普通に使えそうだけど』
「それが危険。なんとなく使ってるとそれが間違った使い方だって気付かな
いからバグになったりするんです。しかもコンパイルエラーにならないし」
『げ』
「まず確認しておいて欲しいのは、次のプログラムは間違いってこと」

char *GetPointer_Bad()
{
    char *pch = "あいうえお";
    return pch;    // ダメ！
}

『中の変数のポインタを返してる……って、その文字列は関数から出たらな
くなっちゃうからダメ、なんだよね。ついこの前やったでしょ』
「 Version 11.02 でやったね。じゃあ、これはどう？」

CString GetString()
{
    CString cStr = "あいうえお";
    return cStr;
}

『あ、 CString になった……これ、どうなんだろう。 MFC ってこういう関
数多いから、大丈夫だと思うんだけど、確証ないし』
「だね。結論から言えば、普通に使うなら大丈夫」

void Use_GetString()
{
    CString cRecvStr = GetString();
    TRACE( "%s\n", cRecvStr );
    // あいうえお
}

『あ、ホントだ』
「これができるのは、２重のコピーのおかげ」
『２重のコピー？』
「まず、 GetString() の方で」

    return cStr;

「ってしてる部分。このとき、戻り値用に新しく CString が作られて、そ
の中に cStr がコピーされます」
『つまり CString がふたつできるってこと？』
「そういうこと。この戻り値用の CString を仮に _cRetStr とします。さ
て、 GetString() の関数から抜けたとき、中の変数の cStr は削除されま
す」
『やっぱなくなるのね』
「ところが、戻り値の _cRetStr はこの時点では削除されません」
『関数から抜けてるのに？』
「そう。削除されちゃうと返せないからね。で、この戻り値が、関数呼び出
しに置き換わるような感じになります」

    CString cRecvStr = _cRetStr;

『おー、これならコピーできるね。そっか、バケツリレーの要領なんだ』
「そゆこと。ちなみにこの次の行に移ると _cRetStr は削除されます」
『この辺って直に見ることってできる？』
「うん。 return の行でブレークポイント置いてステップインしていくと」
『お、コンストラクタとかデストラクタとか呼ばれてる！』
「先に呼ばれてるコンストラクタが戻り値のってこと」
『なるほどねー』
「というわけで、こういう使い方なら問題なし」
『……ってことは、問題のある使い方があるんだ』
「そう、それがこれ」

void Use_GetString_Bad()
{
    const char *pchRecv = GetString();
    TRACE( "%s\n", pchRecv );
}

『 char のポインタで受け取ってる……』
「ってことは、この部分は」

    const char *pchRecv = _cRetStr;

「ってなってるってこと。 CString には operator LPCTSTR があるから」
『中のポインタが pchRecv に入るね』
「でもそれはコピーじゃないでしょ。 _cRetStr の中のポインタを持っただ
け。で、その _cRetStr がなくなったら？」
『そのポインタはもう使えない……』
「というわけ。つまり、 CString を戻り値として返してるのを、 const 
char * で受け取っちゃいけないってこと」
『でもこれ、やっちゃいそう……』
「ま、これは CString が悪いってことも言えるんだけど」
『え、そなの？』
「 CString::operator LPCTSTR() がなければ、これってできないでしょ」
『あ……そっか、さっきのところでコンパイルエラーになるね、変換できな
いから』
「ポインタを返すメンバ関数を別に用意する、って方法ならこういう間違い
は起きないけどね。まぁ、そのメンバ関数が GetData() だとして」

    const char *pchRecv = _cRetStr.GetData();

『うわ意味なー』
「ま、そういうことを気付かずにしちゃったのが」
『さっきの例って事ね』
「で、ポインタじゃなくて普通に CString で受け取れば大丈夫な理由は、
ちゃんとコピーするから」

    CString cRecvStr = _cRetStr;

「この部分で、 _cRetStr の中の文字列を cRecvStr にコピーしてるから大
丈夫」
『ってことは、ふたつできちゃうってことよね。コンストラクタとデストラ
クタが呼ばれまくったりしてたし、なんか無駄って気も』
「無駄な分安全、ってところかな。参照って憶えてる？」
『ポインタみたいなのだよね、 Version 3.22 ( No.047 ) とかでやった
ね』
「たとえばこれは？」

CString &GetStringRef_Bad()
{
    CString cStr = "あいうえお";
    return cStr;    // ダメ！
}

『って、さっきのポインタと同じじゃん！　中の cStr が関数抜けたら消え
ちゃうんだから、その参照返しちゃだめでしょ』
「その通り。だからこれはダメ。ところが、 CString::operator =() のリ
ファレンス見てみて」
『んーっと……げげ！！』

const CString& operator =( const CString& stringSrc );

『なんで参照返してるの？？　あ、中で new とかして作ってるとか』
「そしたら外で delete しなきゃいけないけど、参照は delete ってできな
いから」
『う……』
「この = の使い方はこんな感じ」

void Use_CStringRef()
{
    CString cStr1 = "あいうえお";
    CString cStr2;
    CString cStr3;

    cStr3 = cStr2 = cStr1;
    TRACE( "%s\n", cStr1 );
    TRACE( "%s\n", cStr2 );
    TRACE( "%s\n", cStr3 );
    // あいうえお
    // あいうえお
    // あいうえお
}

「注目して欲しいのはこの行」

    cStr3 = cStr2 = cStr1;

「【演算子の結合規則】って憶えてる？」
『えーっと、確か右が先で左が後とかだよね』
「そう。 Version 6.10 ( No.110 ) でやったね。 = は右が先、左が後だか
ら、まず」

    /* cStr3 = */ cStr2 = cStr1;

「の、コメントしてない部分が先に実行されます」
『 cStr2 にも〈あいうえお〉が入るわけね』
「で、さっきの参照の種明かしなんだけど、実はこの参照は cStr2 自身の
参照なんです」
『 cStr2 自身？？？』
「そう。だから、この結果は」

    /* cStr3 = */ cStr2;

「になるわけ」
『あ、そーか、それでこれがそのまま代入されるわけねー』
「そゆこと」
『でもさ、それなら参照使う必要ないんじゃ……あ』
「そう、わざわざ複製とか作るとそれだけ手間が掛かるからね。それに、仕
組み的にも参照の方が合ってるでしょ？」
『確かに、入れられた方がそのまま残ってて、それを今度は入れてあげる、
と』
「そいういうこと。重要なのは、戻り値に参照を使うこと自体がいけないん
じゃなくて」
『関数の中の変数の参照を返しちゃダメ、ってことね』
「そういうこと。この辺の仕組みを知っておくことが重要かな」
『そういえば、自分自身の参照ってどう返すの？』
「 this って憶えてる？」
『げ、あのよくわかんないの！』
「うん、そのよくわかんないの…… this って自分自身だから、それを返せ
ばいいわけ」
『それだけ聞けばなんとなくわかるけど、たぶんよくわかってない』
「かもね。その辺は次の機会、かな」
『次の機会？』

/*
    Preview Next Story!
*/
『ねー、次の機会って？』
「かなり先、自分でクラスをどんどん作れるようになったら」
『それって１０年後？』
「ちょっと笑えないかも」
『う”』
「それと、文字列編は次回で終わり」
『へ？』
「というわけで次回」
＜ Version 11.23 文字列編まとめ ＞
『につづく！』
「文字列編の次はものすごく混乱する話があるから覚悟して」
『げげげ！！』


////////////////////////////////////////////////////////////////////
/*                ２００３年９月８日（月）の更新                  */
http://www.kab-studio.biz/index.html

・メニュー新設？
　コミケ情報等、コンテンツが複雑化してるのにちゃんとしたメニューがな
いのはまずい、ということで何か作る予定。

・ほとはー１話追加予定
　三人合体ホットハーブに１話追加予定。中に入ってみたら……。

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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/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.biz/Freeware/index.html#MailMagazine


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

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

