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

    KAB-studio.h


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

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

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

・ほとはー１話追加！
　三人合体ホットハーブに１話追加。第６話スタート！
[ 三人合体ホットハーブ ]
http://www.kab-studio.biz/Comic/HotHerb/index.html

・KAB-sudio.h 縮刷版更新
　KAB-studio.h が２２０号に達したので縮刷版を更新します。ダウンロー
ドはダウンロードルームにて。
[ ダウンロードルーム ]
http://www.kab-studio.com/Freeware/index.html#MailMagazine


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

2003/08/17 (Sun)
　夏コミ惨敗。乗った駅から……。２００冊はかなり大きい。初めてのお客
様。午後過ぎてからは売れず……。でもなんだかんだ言って満足？　委託準
備。デジタルマーケットとかも考えてます。お客さんがいる、ファンがいる
って本当にうれしいです。

2003/08/18 (Mon)
　在庫と筋肉痛。８月中に委託関係は終わらせます。ほとはー掲示板を作る
予定。冬コミは CppUnit ？　そして MASM 。

2003/08/19 (Tue)
　筋肉痛でバテ気味。すてプリとおね２をリアルタイムで見る。今日の一枚
はお兄さん似深衣奈。クロ現。夏コミで気付いたこと。そしてありがとうご
ざいました〜。そしてリンク切れ。

2003/08/20 (Wed)
　お仕事の方針が決定。横浜で同人誌とか破壊魔定光とか。今日の一枚は
定光。ひとつ５００円。そしてゼリー飲料。

2003/08/21 (Thu)
　死ねるプロジェクト。少しずつ少しずつ。そしてヴィダーインゼリーの正
しい使い方。

2003/08/22 (Fri)
　４時まで起きてほとはー夏コミ版委託依頼書を書く。お仕事はドキュメン
ト苦手。ＦＦクロニクルをしに。それまで更新の準備を。KAB-studio.ROM 
の通販。ヴィダー系の罠。

2003/08/23 (Sat)
　徹夜でファイナルファンタジークリスタルクロニクル。仮眠取って休出。
お手伝い程度だし。日曜日は表紙壁紙描き。今日の一枚は秋葉様。新月譚
月姫が微妙だ……。


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

■　第八章　朱と碧　−９−

「でもさー、そんな簡単に感じ取るなんてことできるわけないわよー」
　板の間の上で手足を伸ばし、思いっきり「疲れたー！」という表情をす
る。
「たりめーだ。そんな簡単にできてたら俺だってできてる」
「はいはい、そうですかー」
　洗い場に三つ編みの女性が来る。舞が小声で雅樹に訊く。
「彼女の名前、教えてくれる？」
「ああ、梢昌子（こずえまさこ）っていうんだ」
「梢……？」
　赤葉様と同じ苗字。
「赤葉様の息子の嫁、だからな。……その息子は、かなり前に死んじまった
からな、触れるなよ」
　舞は無言で頷いた。そんな気がしていたから、驚く事はなかった。
　そう思いながら眺めていると、野菜を洗い始めていた。
「あ、私も手伝います」
「あら、じゃあお願いしちゃおうかしら」
　それに答えて腕をめくろうとしたとき、かなりの数の野菜が目に入った。
「これ……全部？」
「ここには野菜しかないし、おもてなしするにはこれくらいないと」
「あ、……気を遣って下さってありがとうございます」
「いいのよ！」
　昌子は満面の笑みを浮かべて言った。
「外から来る人なんてほんとに珍しいし。そうそう、あとでいろいろ訊かせ
てね、下の話。今の流行とか！」
「ええ、そんなことでよろしければ」
　舞は少し前の自分を思い出していた。母が下界に降りる度に話を聞いた
り、約束したおみやげに心を弾ませたり。
　そう。
　ここは、碧き泉に似ている。雰囲気が、空気が、似ている。
　でも、碧き泉じゃない。
　母も父も兄もお手伝いさんもいない。
　碧き泉じゃ、ない。
「だから……素直に、ほっとできるのかも……」
　舞は目を伏せて笑みを浮かべ、そうつぶやきつつ、空気の暖かさを味わっ
ていた。
                                                              (続く)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『夏コミから１週間、立ち直り早いよねー』
「まぁ今は同時とかちょっと前から通販するところもあるし」
『え、そうなの？』
「同人誌もそういう競争は熾烈みたいだから」
『確かに、先行販売とか、戦略としてはアリよね……』
「そう考えたら出遅れたって言えるのかも」
『でもそれはそれでつまんなくない？』
「つまんない？」
『やっぱコミケそのものが楽しいってゆーもんじゃないの！？』
「確かに、そういうお祭り的なものっていうのも大きいのかも」
『というわけで冬コミにはみんな来てねっ！』
http://www.kab-studio.biz/
_______________________________________________________________[KCM]

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

　Version 11.21
「演算子のオーバーロード」の意味

「今回も前回の続き、演算子のオーバーロードについて見ていきます」
『え？　前回でだいたいやっちゃったと思うんだけど』
「ところがそうじゃないんです。演算子のオーバーロードは、奥が深いって
いうか、複雑というか、ややこしいというか……」
『よーするにアレなのね、アレ』
「まぁそんなところ。というわけで、さらにややこしい部分について見てい
きます。まず、新しく CTestString ってクラスを作ることを考えます。こ
のクラスは」

    CTestString cTestString = "あいうえお";
    TRACE( "%s\n", cTestString.GetData() );
    // あいうえお

「という感じに、コンストラクタで文字列を渡すと中に持って、 
GetData() で取得できる、っていうクラスとします」
『うん』
「これに + 演算子のオーバーロードを持たせるとします」

    CString cStr;
    cStr = cTestString + "かきくけこ";
    TRACE( "%s\n", cStr );
    // あいうえおかきくけこ

『こーゆーのって CString ではできるよね』
「そう。まぁここから説明するのは全部 CString でもしてることだからそ
れを参考にしてもいいんだけど、それだと作る練習にはならないから」
『はーい』
「で、実際にこの機能を CTestString に入れると、 CTestString はこうな
ります」

class CTestString
{
private:
    CString m_cStr;
public:
    // コンストラクタ。
    CTestString( CString p_cStr )
    {
        m_cStr = p_cStr;
    }

    // + 演算子。
    CString operator + ( CString p_cStr )
    {
        return m_cStr + p_cStr;
    }

    // データ出力。
    CString GetData() const
    {
        return m_cStr;
    }
};

『うん、この辺は前とほとんど同じだからわかる……けど？』
「そう、ここまでは復習段階。で、今回説明するのは」

    cStr = "かきくけこ" + cTestString;

「ってできるようにする方法」
『できないの？』
「うん、ビルドしてみて」
『エラーになった』

error C2679: 
二項演算子 '+' : 型 'class B1::CTestString' の右オペランドを扱う
演算子は定義されていません。(または変換できません)

『どういうこと？』
「つまり〈 文字列 + CTestString 〉はできませんよってこと。実は、二項
演算子のオーバーロード関数は、演算子の右側に値が来ないと呼ばれないん
です」
『んーつまり』

    CString operator + ( CString p_cStr )

『だったら』

    cStr = cTestString + "かきくけこ";

『じゃなきゃいけないってこと？』
「そういうこと」
『 i++ で呼ばれるのは？』
「それは単項演算子だから別。というかそれはかなり特別だし」
『型変換のも別？』
「そう、あれも別」
『つまり、 + とか = とか、そういう二項演算子系は、左側に自分のクラス
を、右側に渡す値が来ないと呼べないんだ』
「そういうこと」
『でも、 CString はできる、だから方法はあるんだよね』
「もちろん。それをこれから説明します。二項演算子の正弦波、クラスのメ
ンバ関数だったから。で、実は演算子のオーバーロードは普通の関数として
も作ることができるんです」
『普通の関数って、メンバ関数じゃない、クラスの中にない関数ってこ
と？』
「そういうこと。たとえばこんな感じに」

/**
    + 演算子のオーバーロード。
    グローバル関数版。
*/
CString operator + 
    ( CString p_cLStr
    , CTestString p_cRTestString 
    )
{
    return p_cLStr + p_cRTestString.GetData();
}

『なんか変……』
「関数名とかなくていきなり operator だからね。でも、基本的にはメンバ
関数のものと同じ。違うのは、引数が多いこと」
『二項演算子だから、引数がふたつってこと？』
「そういうこと。使用例はこんな感じ」

// 使用例。
void Use_GlobalPlus()
{
    CTestString cTestString = "あいうえお";
    TRACE( "%s\n", cTestString.GetData() );
    // あいうえお

    CString cStr;
    cStr = "かきくけこ" + cTestString;
    TRACE( "%s\n", cStr );
    // あいうえおかきくけこ
}

「この中の」

    cStr = "かきくけこ" + cTestString;

「は、さっきの関数の」

CString operator + 
    ( CString p_cLStr                // ＜ "かきくけこ"
    , CTestString p_cRTestString     // ＜ cTestString
    )

「に入るんです」
『で、中で p_cRTestString.GetData() 呼んで文字列取り出して、 
CString どうしだから足して、それを返してる……と』
「そういうこと。これとメンバ関数版の両方を用意すれば」
『 + は完璧ってことね。……？　もしかして、演算子のオーバーロードを
するときって、かなり大変？』
「大変だね。ひととおりの演算子に対応させるには、それだけの数、関数を
用意しなきゃいけないからね」
『めんどくさー』
「でも、たとえば上の例、 - 演算子は必要だと思う？」
『文字列から文字列を引く……なんかイメージわかないね』
「そういう場合には無理に作る必要ないから」
『必要なものだけ作ればそんなに大変じゃないわけね』
「さて、ここで注意。たとえばこういうのは作れません」

/**
    + 演算子のオーバーロード。
*/
int operator + 
    ( int p_iL
    , int p_iR
    )
{
    TRACE( "%d + %d = %d", p_iL, p_iR, p_iL + p_iR );
    return p_iL + p_iR;
}

『引数ふたつとも int ……って、それって普通の + と同じじゃない』
「そう。たとえばこういう例みたいに、普通の + 演算子をオーバーロード
して、その中にデバッグ機能を入れたいなーとかって場合もあるわけです」
『確かにこれはちょっと便利そう』
「でもこれはできないんです」

error C2803: 
'operator +' の宣言で、クラス型のパラメータが 1 つも
指定されていません。

『ってコンパイルエラーが出た』
「演算子のオーバーロードをするときには、かならず引数のどれかがクラス
じゃないといけないんです」
『クラスじゃない、つまり両方とも int はだめ、と。ってことは、元々あ
るのは変えられないってことね』
「そういうこと。で、ここからはちょっと脱線というか、難しい話なんだけ
ど」
『？』

/**
    + 演算子。
*/
int operator + 
    ( int p_iL
    , int p_iR
    )
{
    return p_iL + p_iR;
}

『なにこれ。てか普通の + だね』
「プログラマー的な考え方をした場合、こういう関数がどっかに隠れてる、
って考えて欲しいかなと」
『……どゆこと？』
「たとえば」

    int i = 100 + 200;

「って書いてあったら、どっかにあるこの関数が呼ばれてるんだって」
『そう考えるってこと？』
「そう。そうすると、なんで〈演算子の【オーバーロード】〉なのかって」
『あ……そか、もしこういう関数があるなら、その引数違いの関数を作るっ
てことになるから』
「そう、納得できるでしょ？」
『でもこじつけっぽい』
「う”」

/*
    Preview Next Story!
*/
『オーバーロードって複雑ねー、使うだけなら便利なんだけど』
「それって危険かも」
『そなの？』
「使えるだけで仕組みを知ってないと、危険なことって結構あるよ」
『 CString なんてすごく簡単に使えそうだけど』
「というわけで次回」
＜ Version 11.22 CString の注意点 ＞
『につづく！』
「蛇口をひねると水が出る、ってだけじゃダメってこと」
『ダメなの？』
「たぶん……」


////////////////////////////////////////////////////////////////////
/*                ２００３年９月１日（月）の更新                  */
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


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
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
*/
////////////////////////////////////////////////////////////////////

