////////////////////////////////////////////////////////////////////
　転┃職┃な┃ら┃　★無料転職サポート★　
　━┛━┛━┛━┛　　　　　　　　　　転職業界エキスパートが
　　　パ┃ソ┃ナ┃キ┃ャ┃レ┃ン┃ト┃あなたの転職を無料でサポート！
 　　 ━┛━┛━┛━┛━┛━┛━┛━┛
　まずは登録を→→→ http://af1.mag2.com/m/af/0000008658/001/s00000001423001/032
////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


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

    送信日： 2006/02/20(Mon) No.345
    配信数： 1805
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
// NEW!!
http://www.kab-studio.biz/index.html

2006/02/20 (Mon)
　ほとはー外伝３にP.53を追加！
[ 三人合体ホットハーブ 外伝３ 【ワタシ の キロク】 ]
http://www.kab-studio.biz/Comic/HotHerbA3/index.html


2006/02/20 (Mon)
　#pragma twice ホームページ版にアーカイブ追加！
14.26 ファイル検索アプリの準備
14.27 フォルダを潜るファイル検索
[ #pragma twice ]
http://www.kab-studio.biz/Programing/PragmaTwice/index.html


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

2006/02/12 (Sun)
　カブカテキョが多い。シャクシレビュー。疲れた……。そしてコミケ締め
切り。

2006/02/13 (Mon)
　徹夜した。某専門学校用プログラムを作り、夏コミオンライン申込を。
カブカテキョとあと細かいのとお絵描き。作業効率良かった、徹夜もいいか
も？

2006/02/14 (Tue)
　体が異常に思い。徹夜はまずいらしい。３時までカブカテキョ、お絵描
き、明日のプレゼンチェックの準備とか。そして体壊すよ。

2006/02/15 (Wed)
　早く起きるコツ。午後までカブカテキョ、プレゼンチェックのまとめ。
７時から某専門学校でプレゼンチェック。図のバランス。帰ってからは
ぐだー。教えるのって大変。そしてだめじゃん。

2006/02/16 (Thu)
　完全に駄目な日。何もしてない。雨なのも駄目。

2006/02/17 (Fri)
　１０時半の起き。作業効率悪い。夜に新宿で飲み。

2006/02/18 (Sat)
　昨日に引き続き駄目な日。昨日の夜中にパッチ当て。体全体に疲労感が。
風邪でもないらしい。 JavaA2Z の単語追加とかかぶヘッダーの準備で以上。
ちょっとだけプログラミング。


////////////////////////////////////////////////////////////////////
// かぶろぐ。
http://d.hatena.ne.jp/kab_studio/

2006/02/12 (Sun)
http://d.hatena.ne.jp/kab_studio/20060212
起きた……。
[アニメ]おねがいマイメロディ 第46話「一発パンチできたらイイナ！」
[アニメ]ゾイドジェネシス 第44話「離陸」
[アニメ]魔法戦隊マジレンジャー 
  第49話「伝説への帰還〜マージ・マジ・マジェンド〜」(終)
[アニメ]交響詩篇エウレカセブン 第42話「スターダンサー」
[アニメ]タクティカルロア 第6話「相似形の悪夢」
[アニメ]陰からマモル！ 第6話「転校生はドキドキ美少女」
[アニメ]蟲師 第16話「暁の蛇」
[KAB-studio][ほとはー]ほとはー外伝３ P.52
[KAB-studio]ぷらとわ追加。
[買][装備]ショクシ

2006/02/13 (Mon)
http://d.hatena.ne.jp/kab_studio/20060213
起き……てる！？
[C70]Webで申込みができるなんて！！
[C70]オンライン申込完了！
2時間ほど落ちてた。
[KAB-studio][JavaA2Z]単語追加。
[アニメ]Fate/stay night 第6話「魔術師二人〈後編〉」
[絵]……

2006/02/14 (Tue)
http://d.hatena.ne.jp/kab_studio/20060214
起きた……
[アニメ]Canvas2 第18話「トマトレッドを撃て！」
[絵][ほとはー]あるいはこんなバレンタインデー
[KAB-studio][JavaA2Z]単語追加。
「兄妹はじめました！」コミックス第1巻発売！

2006/02/15 (Wed)
http://d.hatena.ne.jp/kab_studio/20060215
起きた。
ゲーム関係2つ。
行ってきます。
帰ってきたー。
[Tips]デザイン微修正。

2006/02/16 (Thu)
http://d.hatena.ne.jp/kab_studio/20060216
起きた〜。
運転免許更新の講習に誤ってアダルトビデオ…福岡
Java Platform, Standard Edition (Java SE) 6 Beta
[アニメ]かしまし〜ガール・ミーツ・ガール〜 
  第6話「お嫁さんとお婿さん」
[アニメ]IGPX 第17話「白い雪」
[アニメ]「ソルティレイ変更・休止」コメント
はてなカウンターの画像アップロード機能について

2006/02/17 (Fri)
http://d.hatena.ne.jp/kab_studio/20060217
起きたのですがー。
[アニメ]かりん 第13話「めざめちゃって　恥ずかしい」
[アニメ]舞-乙HiME 第19話「宿命の17歳（^^；）」
[アニメ]びんちょうタン 第3話「びんのお誕生びん」
[アニメ]REC 第3話「暗くなるまで待って」
[アニメ]ノエイン 第18話「ワルイユメ」
[アニメ]マジカノ 第7話「メイドが来たってマジですか？」
おでかけ。
帰ってきた。

2006/02/18 (Sat)
http://d.hatena.ne.jp/kab_studio/20060218
起きましたよ。
[KAB-studio][JavaA2Z]単語追加。
[アニメ]ふしぎ星の☆ふたご姫 
  第46話「行く？行かない？☆ブライトからの招待状」
[アニメ]灼眼のシャナ 第19話「戦いの中で」
[きらら]まんがタイムきららMAX 2006年4月号


////////////////////////////////////////////////////////////////////
// Ajaxでエロゲーを作るブログ
http://d.hatena.ne.jp/AjaxEroge/

（今週はお休みです）


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

■　第十三章　二人の間　−７−

　地下は、狭かった。
「たく……」
　階段状の斜面を降りると、雅樹がベッド状に並べられた石に寝そべってい
た。それなりに気を回したのか、いくつかの燭台には火が点けられていた。
　その雅樹がいた部屋は、四畳ほどの部屋が三部屋あり、ひとつは物置、ひ
とつは台所、ひとつは寝室として使われていたようだった。
　しかし、人がいた気配はほとんど残っていない。
「これ……戦前のもの？」
　旧字体で書かれた本が数冊あるくらいで、食べ物の類はネズミか何かが食
べ尽くしてしまっていた。
　部屋を抜けると、さらに下へと降りる階段を見つける。人がやっと通れる
空間を、体をよじって降りていく。
「……今地震が起きたら終りね」
「そんなことないですよ、ここは玄き泉なんですから」
「？」
　自信たっぷりに言う舞を、智子は理解できなかった。
　何メートルか降りると、足下がはねた。
「水だ」
「泉……」
　懐中電灯を照らすと、半径１メートルほどの小さな空間があり、その床は
水面によって覆われていた。
「すみません、ちょっと潜ってみます」
「え？」
　と言ったときには、舞は数歩進み、落とし穴に落ちるように泉へと飲み込
まれた。
「……嘘……」
　智子は、理解できないものを見たかのように、頭が真っ白になった。
　舞が、泉に落ちた。
「ぷはっ」
「え”」
　智子の考えがまとまる前に舞は上がる。
「やっぱりここ、泉みたいです。ちょっと潜ったらすごい力で押し返され
ちゃいました」
　何がなんだか理解できない智子に、舞はにっこりと笑って答えた。
                                                              (続く)

////////////////////////////////////////////////////////////////////
// JavaA2Z
http://www.kab-studio.biz/Programing/JavaA2Z/index.html

■追加・更新単語

インスタンス初期化子
インスタンス初期化ブロック
フィールド変数
インスタンス変数
インスタンスフィールド
クラスメンバ
空ステートメント
ラベルステートメント
ラベル


////////////////////////////////////////////////////////////////////
　転┃職┃な┃ら┃　★無料転職サポート★　
　━┛━┛━┛━┛　　　　　　　　　　転職業界エキスパートが
　　　パ┃ソ┃ナ┃キ┃ャ┃レ┃ン┃ト┃あなたの転職を無料でサポート！
 　　 ━┛━┛━┛━┛━┛━┛━┛━┛
　まずは登録を→→→ http://af1.mag2.com/m/af/0000008658/001/s00000001423001/032
////////////////////////////////////////////////////////////////////
// #pragma twice
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 16.18
単項演算子のオーバーロード

「前回は、演算子のオーバーロードの戻り値について説明しました」
『参照にしている理由ってやつね』
「今回は、単項演算子のオーバーロードをしてみます」
『単項演算子ってことは、オペランドがひとつのだよね、 ++ 演算子とか 
! 演算子とか』
「そう。とりあえず ! 演算子を使ってみようか。メンバ関数として作ると
こんな感じになります」

// Data.h

// CDataクラス。
class CData
{
public:
    // private メンバ変数。
    int m_iData;

public:
    // ! 演算子のオーバーロードメンバ関数。
    BOOL operator ! ();
};


// Data.cpp
#include <Windows.h>
#include <stdio.h>

#include "Data.h"

// ! 演算子のオーバーロードメンバ関数。
BOOL CData::operator ! ()
{
    // 有無を言わさずTRUEを返します。
    return TRUE;
}

『あ、引数がない』
「使用例はこうなります」

// Main.cpp
#include <Windows.h>
#include <stdio.h>

#include "Data.h"

int WINAPI WinMain
    ( HINSTANCE p_hInstance
    , HINSTANCE p_hPrevInstance
    , LPSTR p_pchCmdLine
    , int p_iCmdShow
    )
{
    // CData クラスの変数を宣言します。
    CData cData;
    // ! 演算子を使用します。
    if( !cData )
    {
        OutputDebugString( "cData.m_iData == FALSE\n" );
    }
    // cData.m_iData == FALSE

    return 0;
}

「この〈 if( !cData ) 〉が、使用しているところです」
『こうすると、 ! 演算子のオーバーロード、つまり CData クラスの
operator ! () メンバ関数が呼び出されて、絶対に TRUE 返すから』
「 if の中が処理される、という仕組みというわけです」
『引数ないんだね』
「そう。二項演算子の引数のルールってどうだった？」
『えっと……』

・メンバ関数：左オペランドが this 、右オペランドが引数
・普通の関数：左オペランドが第1引数、右オペランドが第2引数

『って感じだった』
「単項演算子の場合には、単純に右オペランドがない、って考えればいいか
ら。メンバ関数版の場合」
『 this がオペランドになるんだね。ってことは、普通の関数版は、
オペランドひとつってこと？』
「そういうこと。普通の関数にすると、以下のようになります」

// Data.h

// CDataクラス。
class CData
{
public:
    // private メンバ変数。
    int m_iData;
};

// ! 演算子のオーバーロード関数。
BOOL operator ! ( CData &p_rcData );


// Data.cpp
#include <Windows.h>
#include <stdio.h>

#include "Data.h"

// ! 演算子のオーバーロード関数。
BOOL operator ! ( CData &p_rcData )
{
    // 有無を言わさずTRUEを返します。
    return TRUE;
}

『普通に、 CData の参照が引数に追加されただけ……二項演算子の時と同
じだね』
「そう考えると分かりやすいかな。二項演算子のルールが分かっていれば、
単項演算子のルールも分かると思うよ」
『うん、単項演算子の方がオペランド少ないんだし』
「さて。単項演算子にはちょっとやっかいなものがあります。それは 
++ 演算子と -- 演算子」
『やっかいなの？』
「 Version 11.20 ( No.220 ) で説明したように、この演算子には前置と
後置の二種類あるんです」
『あ！　そういえばそうだった！』
「前置と後置の話は Version 2.7 ( N0.018 ) でしたね。前置は普通に増減
するけど、後置の場合は次の行に移らないと増減しません」
『だから後置は使うなって話よね』
「分かりにくいからね。実際、後置の ++ 演算子と -- 演算子は、
オーバーロードが面倒になっています」
『単項演算子で、メンバ関数にしても引数が必要なんだね』
「だから後置の方は作らない方がいいと思います。ただ、前置の方はよく使
うから作れるようにしておいて」
『ほーい』
「あと、憶えておいて欲しいことがあります」

・オペランドのいずれかが、必ずクラスである必要がある

『どういうこと？』
「つまり、こういうのは作れないって事」

// Data.cpp

// int 型に対する + 演算子のオーバーロード。
int operator +( int p_iL, int p_iR )
{
    return 0;
}

『これってつまり、 100 + 200 ってことだよね』
「そう、両オペランドが int 型。オペランドにクラスがないと、コンパイル
エラーになります」

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

『あらら。ってことはー……つまり、普通の演算子の機能を消して、新しい
機能に書き換える、ってことはできないってこと？』
「そういうこと。演算子のオーバーロードは、あくまでクラスに対して新し
い演算子の使い方を追加する、っていう意味だから」
『元々あるのは変えられない、と。あれ？　これは普通の関数だけど、
メンバ関数版の場合は？』
「……メンバ関数版は、左オペランドが？」
『自クラス。あ、メンバ関数版はそれだけでもうクラス使ってるんだ』
「そういうこと。逆に言うと、メンバ関数版なら大丈夫、ってことだね」
『必ずクラスがオペランドになるわけだもんね』
「さて、このように〈オペランドにクラスが必要〉という制限はあるわけだ
けど、逆に言えばそれだけ、ということ」
『どういうこと？』
「たとえば、 API の構造体や、 MFC のクラスといった、既存のクラスに対
して演算子のオーバーロードを行うことができるんです」
『構造体に？』
「たとえば、 Version 7.06 ( No.126 ) で使用した RECT 構造体に、 
+ 演算子を使用してみます」

    RECT stRect1;
    stRect1.left = 100;
    stRect1.top = 200;
    stRect1.right = 300;
    stRect1.bottom = 400;

    RECT stRect2;
    stRect2.left = 1;
    stRect2.top = 2;
    stRect2.right = 3;
    stRect2.bottom = 4;

    // += 演算子を使用してみます。
    stRect1 += stRect2;
    // コンパイルエラー：
    // error C2676: 二項演算子 '+=' : 
    // 'struct tagRECT' は、この演算子または定義済の演算子に適切な
    // 型への変換の定義を行いません。

『うん、できないよね……』
「でも、 += 演算子をオーバーロードしてしまえば……」

// RECT 構造体の += 演算子のオーバーロード。
RECT & operator +=( RECT &p_rstRectL, RECT &p_rstRectR )
{
    p_rstRectL.left   += p_rstRectR.left;
    p_rstRectL.top    += p_rstRectR.top;
    p_rstRectL.right  += p_rstRectR.right;
    p_rstRectL.bottom += p_rstRectR.bottom;
    return p_rstRectL;
}

『これができちゃう！』
「つまり、演算子のオーバーロードは既存の構造体やクラスにも使えるって
こと。ただ、これをしちゃうと動くものが動かなくなりそうだから、危険な
テクニックかも……」

/*
    Preview Next Story!
*/
『演算子のオーバーロードは奥が深い……』
「深すぎるけどね」
『あれ、そんなこと言うなんて意外』
「便利すぎるものほど危険なんだけどね」
『ほほう』
「というわけで次回」
＜ Version 16.19 型変換演算子のオーバーロード ＞
『につづく！』
「だからC++はやめられないんだよね」
『ダメじゃん』


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

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/nikki2/index.html
・購読登録を解除したいときにはこのページで行なってください。
http://www.mag2.com/m/0000012198.htm
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
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 - 2006 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

