////////////////////////////////////////////////////////////////////
■　　　パソナキャレントは、あなたの『正社員転職』を  　　■■■■■
■■　　　成功に導きます。『求人探し』『書類・面接対策』  　■■■■
■■■　　　　『入社』まで無料でサポートいたします。　  　　　■■■
■■■■    　⇒http://af1.mag2.com/m/af/0000008658/001/s00000001423001/031 ■■
■■■■■　　　　　まずは『無料転職サポート』にご登録を！ 　　 　■
////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


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

    送信日： 2006/07/17(Mon) No.366
    配信数： 1743
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

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

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


2006/07/17 (Mon)
　#pragma twice ホームページ版にアーカイブ追加！
16.08 const メンバ関数
16.09 const メンバ関数が呼べる・呼ばれる関数
[ #pragma twice ]
http://www.kab-studio.biz/Programing/PragmaTwice/index.html


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

2006/07/09 (Sun)
　午前中は月曜更新分を。そのあと何もしなかった。気が抜けた？　明日の
予定。多分今日は徹夜。

2006/07/10 (Mon)
　徹夜してワールドカップ決勝戦。午前中は洗濯とJavaA2Zバージョンアップ。
バージョン２の予定。夕方にプール。生き急いでる？

2006/07/11 (Tue)
　１１時起き。お昼過ぎにπ/な絵。あとは何もせずに。ネットワーク不調。
そしてテキスト紹介。

2006/07/12 (Wed)
　午前中はエロ絵描き。午後に液晶プロジェクター引き取り。寝落ちして
気付いたら６時半。調子の良くない状態が再び？　体力的な問題？

2006/07/13 (Thu)
　昨日眠れなくて気付いたら４時。９時に起きて午前中は何もせず。午後に
JavaA2Zのレスポンスタイム高速版作成。TomcatとMySQLのメモリの調整も。
バージョン2。夕方にJavaA2Zのトップイメージ。夏コミにおとぎ銃士赤ずきん
本を出す予定。

2006/07/14 (Fri)
　午前中はビックカメラ有楽町店とヨドバシカメラAkiba店の「W-ZERO3[es]
体験イベント」へ。秋葉原で歩き回る。外付けハードディスク購入。なんか
今日は忙しかった。

2006/07/15 (Sat)
　昨日の夜中にJavaA2Zのバージョンアップ。レスポンスタイムがかなり早く
なりました。メモリ調整も。次のバージョンアップと単語追加はまだ先。
JavaA2Zでしたいけどできないバージョンアップ。午前中はヨドバシ川崎店に
行ってW-ZERO3[es]の予約とキャプチャーボードSAA7130-TVPCI/Bを購入。
お昼に帰ってきてぐだー。


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

2006/07/09 (Sun)
http://d.hatena.ne.jp/kab_studio/20060709
起きたー
[KAB-studio]ぷらとわ追加。
[KAB-studio][ほとはー]ほとはー外伝３ P.65
[アニメ]「牙」 第15話「小さな宝物」
[アニメ]おねがいマイメロディ〜くるくるシャッフル！〜 
　第15話「活躍できたらイイナ！」
[アニメ]となグラ！ 第1話「30センチの片思い」(新)
[アニメ]コヨーテ ラグタイムショー 第1話「脱獄」(新)
[アニメ]恋する天使アンジェリーク 第1話「伝説のエトワール」(新)

2006/07/10 (Mon)
http://d.hatena.ne.jp/kab_studio/20060710
起きてますよ。
ちょっとだけ寝た。
[アニメ]ARIA The NATURAL 第15話「その　広い輪っかの中で…」
[アニメ]ゼロの使い魔 第2話「平民の使い魔」
[アニメ]うたわれるもの 第14話「戦禍」
[KAB-studio][JavaA2Z]プチ修正。
[水泳ダイエット]7月3回目
[装備]液晶プロジェクターのランプが切れ気味？
[きらら]まんがタイムきらら 2006年8月号

2006/07/11 (Tue)
http://d.hatena.ne.jp/kab_studio/20060711
起きた
[アニメ]N・H・Kにようこそ！ 第1話「プロジェクトにようこそ！」(新)
[アニメ]つよきす Cool×Sweet 第2話「生徒会なんて、大キライ!!」
[絵]π/
[きらら]感想追加。
[装備]ネットワーク不調&回復

2006/07/12 (Wed)
http://d.hatena.ne.jp/kab_studio/20060712
起きた。
[絵][版権物イラスト]おとぎ銃士 赤ずきん
[装備]液晶プロジェクターを修理に出す
[link]DS Lite黒
[アニメ]桜蘭高校ホスト部 第15話「軽井沢さわやかバトル」

2006/07/13 (Thu)
http://d.hatena.ne.jp/kab_studio/20060713
起きた。
[link]「た〜らこ〜、た〜らこ〜」CD
[KAB-studio][JavaA2Z]今後の予定
[アニメ]ゼーガペイン 第15話「リインカーネーション」
[アニメ]ちょこッとSister 第1話「プレゼントは妹？」(新)

2006/07/14 (Fri)
http://d.hatena.ne.jp/kab_studio/20060714
起きたのよー。
帰ってきた。
[link][装備]W-ZERO3[es]タッチ＆トライイベント
[アニメ]機神咆吼デモンベイン 第7話「BIG "C"」
[アニメ]ザ・サード 〜蒼い瞳の少女〜 第11話「幻影との戦い」
[アニメ]無敵看板娘 第3話「挑戦者 その名は西山勘九郎」
[アニメ]無敵看板娘 第4話「我が戦いに終点なし」
[買][装備]外付けハードディスク BUFFALO HD-H250U2
[買]秋葉原で買ってきたもの。

2006/07/15 (Sat)
http://d.hatena.ne.jp/kab_studio/20060715
起きたのですよー。
[KAB-studio][JavaA2Z]バージョン2.0にバージョンアップ！(仮)
[link]ニンテンドーDSブラウザー
[買][装備]W-ZERO3[es]予約完了
[買]今日川崎で買ってきたもの。
[買][装備]SAA7130-TVPCI/B 玄人志向
[アニメ]風人物語 第5話「保健室物語」
[アニメ]おとぎ銃士 赤ずきん 第3話「気になる転校生」
[アニメ]ふしぎ星の☆ふたご姫 Gyu! 第16話「トーマの真相☆本当の仲間」
[アニメ]ウィッチブレイド 第14話「家」


////////////////////////////////////////////////////////////////////
// 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/031 ■■
■■■■■　　　　　まずは『無料転職サポート』にご登録を！ 　　 　■
////////////////////////////////////////////////////////////////////
// #pragma twice
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 17.11
仮想関数テーブルって？

「前回は仮想関数について説明しました」
『わかんねー！　なんかいみふめーな感じだったんだけど』
「そこで、もうちょっと詳しく説明します。まず、シンプルにして継承を使
わない場合から説明します」

// Data.h

// CData クラス。
class CData
{
public:
    virtual void Output1();
    virtual void Output2();
};


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

#include "Data.h"

// 基本クラスの Output1() メンバ関数。
void CData::Output1()
{
    OutputDebugString( "CData::Output1()\n" );
}

// 基本クラスの Output2() メンバ関数。
void CData::Output2()
{
    OutputDebugString( "CData::Output2()\n" );
}


// 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;

    return 0;    // ここにブレークポイントをセット。
}

「 CData クラスだけにして、仮想関数を2つにしました」
『あれ？　仮想関数って継承と関係あるんじゃないの？』
「実際には関係あるんだけど、まずは分かりやすくってことで。この時、 
CData メンバ変数を見てみるとこうなっています」

- CData     {...}
  - __vfptr  0x0042da24 const  CData::`vftable'
    [0] 0x0040105a CData::Output1(void)
    [1] 0x0040105f CData::Output2(void)

『あ、なんだか配列っぽくなった』
「図にするとこうなります」

┌────┐
│ cData  │
│        │
│ __vfptr→→→
└────┘   ↓
               ↓
       ←←←←
      ↓
      ↓
   vftable
  ┌──────────────┐
 0│CData::Output1()のアドレス  │
  ├──────────────┤
 1│CData::Output2()のアドレス  │
  └──────────────┘

「cData 変数内に、 __vfptr というメンバ変数が自動的に作られます。こ
のメンバ変数はポインタで、外にある vftable という変数のアドレスを格納
しています」
『で、 vftable はメンバ関数の配列になっていると』
「そう。 vftable は【仮想関数テーブル】って言って、仮想関数、つまり
virtual の付いたメンバ関数の、アドレスの配列になっているんです」
『だから、さっきの Output1() と Output2() が書いてあるってことね』
「その前に書いてある 0x0040105a とかが実際のアドレスです」
『このアドレスって、関数ポインタの時に使った関数のアドレス？』
「そう、 Version 13.17 ( No.253 ) で説明した、関数ポインタが配列に
なったもの、って考えると分かりやすいかも」
『だからそれぞれ、メンバ関数のポインタが入ってるわけね』
「さて、ここまでが仮想関数テーブルの基本」
『ってゆーかここまでじゃメリット分からないし』
「メリットについてはもう少し先で……次に継承とオーバーライドを使用し
た場合の説明をします。さっきのプログラムで、 Output2() メンバ関数だけ
オーバーライドします」

// Data.h

// CData クラス。
class CData
{
public:
    virtual void Output1();
    virtual void Output2();
};

// CData クラスの派生クラス。
class CDerivedData : public CData
{
    // オーバーライドします。
    void Output2();
};


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

#include "Data.h"

// 基本クラスの Output1() メンバ関数。
void CData::Output1()
{
    OutputDebugString( "CData::Output1()\n" );
}

// 基本クラスの Output2() メンバ関数。
void CData::Output2()
{
    OutputDebugString( "CData::Output2()\n" );
}

// 派生クラスの Output2() メンバ関数。
// オーバーライドしています。
void CDerivedData::Output2()
{
    OutputDebugString( "CDerivedData::Output2()\n" );
}


// 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
    )
{
    // CDerivedData クラスを使用します。
    CDerivedData cDerivedData;

    return 0;    // ここにブレークポイントをセット。
}

『うん、 Output2() メンバ関数だけオーバーライドしてる』
「このとき、ブレークポイントで cDerivedData 変数の中身を見ると、以下
のようになっています」


- cDerivedData  {...}
  - CData     {...}
    - __vfptr  0x0042c06c const  CDerivedData::`vftable'
        [0] 0x0040100f CData::Output1(void)
        [1] 0x00401005 CDerivedData::Output2(void)

『あれ……あれれ？　Output2() メンバ関数が、 CDerivedData クラスで
オーバーライドした方になってる！』
「図にするとこうなります」

┌───────┐
│ cDerivedData │
│ ┌────┐ │
│ │ cData  │ │
│ │        │ │
│ │ __vfptr→→→→→
│ └────┘ │    ↓
└───────┘    ↓
                      ↓
       ←←←←←←←←
      ↓
      ↓
   vftable
  ┌──────────────────┐
 0│CData::Output1()のアドレス          │
  ├──────────────────┤
 1│CDerivedData::Output2()のアドレス   │
  └──────────────────┘

『なんで、なんでなんで？』
「なぜかというと、この仮想関数テーブルには、必ずオーバーライドした
メンバ関数のアドレスが格納されるようになってるんです」
『オーバーライドした方……つまり、 CData::Output2() は 
CDerivedData::Output2() でオーバーライドしてるから、
CDerivedData::Output2() のアドレスだけが書かれてるってこと？』
「そういうこと。仮想関数テーブルには各仮想関数のアドレスが書かれるわ
けど、その際、オーバーライドしたメンバ関数があると、そのメンバ関数の
アドレスで上書きされるんです」
『ん、なんだかそれはオーバーライドらしいかも』
「というわけで、次回はいよいよポリモーフィズムについて説明します！」

/*
    Preview Next Story!
*/
「次回はいよいよポリモーフィズムについてです」
『難しい？　簡単？』
「面白くて、不思議」
『意味わかんねー！』
「というわけで次回」
＜ Version 17.12 ポリモーフィズム！ ＞
『につづく！』
「これが面白いって思うかどうかが」
『人としてどうかの瀬戸際ね』


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

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

