////////////////////////////////////////////////////////////////////
●まぐまぐの新着ランキング「ビジネス版」で１位を獲得！
　【何もしないで月５０万円！幸せにプチリタイヤする方法】
　「圧倒的な自由」を手に入れたいあなたに、インターネットで幸せに【プチ
　リタイヤ】する方法を伝授。口コミで読者8000人を突破した伝説メルマガ。
　あなたも幸せにプチリタイヤしてみませんか？
　プチリタイヤしたい方は、この指とまれ！
　http://af1.mag2.com/m/af/0000008658/001/s00000000944001/006 
////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


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

    送信日： 2006/06/12(Mon) No.361
    配信数： 1752
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

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


2006/06/12 (Mon)
　#pragma twice ホームページ版にアーカイブ追加！
15.25 「プロジェクトの設定」リンク編(2)
15.26 「プロジェクトの設定」その他
[ #pragma twice ]
http://www.kab-studio.biz/Programing/PragmaTwice/index.html


2006/06/12 (Mon)
　KAB-studio.hの縮刷版を更新！
[ ダウンロードルーム ]
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


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

2006/06/04 (Sun)
　カブカテキョをがーっと。６月１２日からのおしごと。ほとはー外伝３は
お休み……。そして Makefile について。そしてメトロイド。

2006/06/05 (Mon)
　今日から演習中心。頭がちかちかしてきた。あっという間に過ぎた。帰っ
てからはずーっとメトロイド。

2006/06/06 (Tue)
　演習でてんてこまい。７時半まで残って生徒のフォロー。カブカテキョす
る余裕ない……。

2006/06/07 (Wed)
　引き続き演習。コードレビューがもうなんだか。７時に帰ってきて
メトロイド。６月終わるまで体力を維持しないと。

2006/06/08 (Thu)
　次の日の朝に日記。京浜東北線が止まって朝っぱらか走ることに。演習
最終日。コードレビューとフォローを平行して。まじ疲れる。WBS観てたら
いつの間にか寝て……。

2006/06/09 (Fri)
　最終日！　比較的まったり風味。通して見ると、サブ講師だったんで
つまんなかった。ラスト３日はきつかった……。「仕事」感が強い……。
生徒達の飲み会に参加。いつの間にか寝てた。

2006/06/10 (Sat)
　午前中は日記書いて洗濯してかぶヘッダーの準備して、カブカテキョして
おしごとの郵便出して野菜スープ作って以上。


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

2006/06/04 (Sun)
http://d.hatena.ne.jp/kab_studio/20060604
起きたのです。
[KAB-studio]ぷらとわ追加。
[KAB-studio][ほとはー]ほとはー外伝３はお休みです。
[アニメ]おねがいマイメロディ〜くるくるシャッフル！〜 
　第10話「サッカーできたらイイナ！」
[アニメ]「牙」 第10話「孤独な王女」
[アニメ]ひぐらしのなく頃に 第9話「祟殺し編　其ノ壱　兄」
[アニメ]西の善き魔女 第9話「世界のかなたの森」
[メトロイドプライムハンターズ]ハーフタレットに頼りきり。
[メトロイドプライムハンターズ]今日までの戦績
トランスフォームキル：309 

2006/06/05 (Mon)
http://d.hatena.ne.jp/kab_studio/20060605
起きた。
帰ってきた。
[メトロイドプライムハンターズ]今日までの戦績
[アニメ]ARIA The NATURAL 第10話「その　あたたかな街と人々と…」

2006/06/06 (Tue)
http://d.hatena.ne.jp/kab_studio/20060606
起きたー。
帰ってきた。
「うたわれるもの」Amazonで安心して？予約しましょう。
[メトロイドプライムハンターズ]今日までの戦績
[アニメ]涼宮ハルヒの憂鬱 第10話「涼宮ハルヒの憂鬱IV」

2006/06/07 (Wed)
http://d.hatena.ne.jp/kab_studio/20060607
お、おき……
帰宅。
[メトロイドプライムハンターズ]今日までの戦績

2006/06/08 (Thu)
http://d.hatena.ne.jp/kab_studio/20060608
起きた？
帰ってきたー。
[アニメ]桜蘭高校ホスト部 第10話「藤岡家の日常」
[アニメ]ブラックラグーン 第9話「Maid to Kill」

2006/06/09 (Fri)
http://d.hatena.ne.jp/kab_studio/20060609
あー起きてます。
凄く帰宅。
[きらら]まんがタイムきらら 2006年7月号
[アニメ]錬金3級 まじかる？ぽか〜ん 
　第19話「コールドの呪文はスノボスキー」
[アニメ]錬金3級 まじかる？ぽか〜ん 
　第20話「ホットな呪文は天然温泉」
[アニメ]ゼーガペイン 第10話「また、夏が来る」

2006/06/10 (Sat)
http://d.hatena.ne.jp/kab_studio/20060610
起きた
[アニメ]Fate/stay night 第23話「聖杯」
[アニメ]彩雲国物語 第10話「待てば海路の日和あり」
[アニメ]ふしぎ星の☆ふたご姫 Gyu! 第11話「熱いぜ!☆初恋のデコール」
[アニメ]感想追加。
[きらら]感想追加。


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

■追加・更新単語

（今週の追加はありません）


////////////////////////////////////////////////////////////////////
●まぐまぐの新着ランキング「ビジネス版」で１位を獲得！
　【何もしないで月５０万円！幸せにプチリタイヤする方法】
　「圧倒的な自由」を手に入れたいあなたに、インターネットで幸せに【プチ
　リタイヤ】する方法を伝授。口コミで読者8000人を突破した伝説メルマガ。
　あなたも幸せにプチリタイヤしてみませんか？
　プチリタイヤしたい方は、この指とまれ！
　http://af1.mag2.com/m/af/0000008658/001/s00000000944001/006 
////////////////////////////////////////////////////////////////////
// #pragma twice
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 17.06
継承と代入

「前回は MFC 全般の継承関係について説明しました」
『これまで結構継承って使ってたんだね、あまり意識したことなかったけ
ど』
「 MFC はそういうところあまり意識しなくても使えるようにしてあるから
ね。さて、今回はちょっとややこしい、継承関係にあるクラスの代入につい
て説明します」
『その説明がもうややこしいんだけど』
「どういうことかというと」

・基本クラス←派生クラスの代入
・派生クラス←基本クラスの代入

「ができるかどうか、できるとしたらどうなるのか、っていう話」
『あーなるほど、ならそんなに複雑じゃなさそうだけど』
「まぁ実は、これがすっごーく複雑な話に継ながるんだけど」
『げげ』
「ま、とりあえずは分かりやすいところから。分かりやすくするため、 
public メンバ変数を使います」

// Data.h

// CData クラス。
class CData
{
public:
    int m_iData;
};

// CData クラスの派生クラス。
class CDerivedData : public CData
{
public:
    int m_iData2;
};

『ただメンバ変数持ってるだけのクラスね』
「基本クラスは m_iData 、派生クラスは m_iData2 を持たせてます。この
状態で……」

・基本クラス←派生クラスの代入

// 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;
    cDerivedData.m_iData = 100;
    cDerivedData.m_iData2 = 200;

    // CData クラスを用意して代入します。
    CData cData;
    cData = cDerivedData;

    // 出力します。
    char pch[256];
    sprintf( pch, "%d\n", cData.m_iData );
    OutputDebugString( pch );
    // 100

    return 0;
}

『んと、ここでしてるんだよね』

    基本 ← 派生
    cData = cDerivedData;

「そう。このように派生クラスから基本クラスに代入すると、派生クラスの
各メンバ変数の値が基本クラスの各メンバ変数に代入されます」

    // 出力します。
    char pch[256];
    sprintf( pch, "%d\n", cData.m_iData );
    OutputDebugString( pch );
    // 100

『お、本当に入ってる』
「つまり、さっきの代入は、以下のように置き換えたのと同じってこと」

    cData = cDerivedData;
        ↓↓↓
    cData.m_iData = cDerivedData.m_iData;

『あれ？　m_iData2 は？』
「代入されません。だって、 CData クラスにはないから」
『あー……つまり、基本クラスにあるメンバ変数だけコピーされる、と』
「そういうこと。図にするとこうかな」

┌──────┐    ┌───────┐
│ cData      │    │ cDerivedData │
│            │    │              │
│ m_iData ←←←←←←m_iData      │
└──────┘    │ m_iData2     │
                    └───────┘

『 cData にない m_iData2 メンバ変数は放っとかれちゃうわけね』
「さて、これが基本クラスから派生クラスへの代入。次は逆」

・派生クラス←基本クラスの代入

// 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;
    cData.m_iData = 100;

    // CDerivedData クラスを用意して代入します。
    CDerivedData cDerivedData;
    cDerivedData = cData;
    // コンパイルエラー：
    // error C2679: 二項演算子 '=' : 
    //     型 'class CData' の右オペランドを扱う演算子は定義
    //     されていません。(または変換できません)

    return 0;
}

『なんですと、コンパイルエラー！？　代入できないってこと？？』
「そういうこと。つまり」

・派生クラス←基本クラスの代入はできない

「ということです」
『な、なんで？？？』
「なぜかというと、派生クラスには基本クラスにないメンバ変数があるから」
『 m_iData2 があるから、ってこと？』
「そういうこと。代入は〈右の値を左の変数に入れる〉わけだから、
m_iData2 のような〈入れる元の値〉がないと代入できないわけです」
『むむむ？』
「図にするとこう」

┌───────┐   ┌──────┐
│ cDerivedData │   │ cData      │
│              │   │            │
│ m_iData ←←←←←← m_iData    │
│ m_iData2 ？  │   └──────┘
└───────┘

「こんな感じに、m_iData メンバ変数は cData にも存在するからいいんだ
けど、 m_iData2 は cData にないから、何を入れたらいいかわからないわ
け」
『 m_iData2 が宙ぶらりんになっちゃう、だから代入できない……と』
「そういうこと。だから、基本クラスから派生クラスへは代入できないんで
す」
『質問！』
「はい火美ちゃん」
『それってつまり、 CDerivedData クラスから m_iData2 をなくせばいいっ
てこと？』
「ううん、今の説明ではとりあえずそう説明したけど、実際にはメンバ変数
の内容に関係なく基本クラスから派生クラスへは代入できないから」
『むむむ？』
「派生クラスは、基本クラスに〈メンバが加えられたもの〉だから、ってい
う前提で基本クラスから派生クラスへの代入が禁止されているんです」
『んー、なんか理不尽な気もするけど……もひとつ質問！』
「はい火美ちゃん」
『この例だと、 m_iData だけは代入できるでしょ。それだけ代入するのっ
てどうするの？』
「そういう場合はひとつずつ代入します」
『げげ』

    // CDerivedData クラスを用意して代入します。
    CDerivedData cDerivedData;
    cDerivedData.m_iData = cData.m_iData;
    cDerivedData.m_iData2 = 0;

『めんどくさー。ねぇ、キャストはできないの？』
「できません」

    // CDerivedData クラスを用意して代入します。
    CDerivedData cDerivedData;
    cDerivedData = (CDerivedData)cData;
    // コンパイルエラー：
    // error C2440: 'type cast' : 
    //     'class CData' から 'class CDerivedData' に変換することは
    //     できません。

『う”ー』
「まぁこれは仕方ないかな。それに、実際問題として派生クラスから
基本クラスへもちょっと危険だから、本当はコピーコンストラクタを作った
方が安全かな」
『コピーコンストラクタって Version 16.11 ( No.338 ) のだよね。それも
めんどい……』

/*
    Preview Next Story!
*/
『む、なんだか突然ハードな気がします！』
「うん、ここからは結構複雑かも」
『なんですと！』
「でもそのあとには、とっても面白いものが待っています！」
『うわぁすごくうさんくさい！』
「う、うさんくさい！？」
『というわけで次回』
＜ Version 17.07 継承と代入・ポインタの場合 ＞
「につづく！」
『それが面白いものなの？』
「ううん、まだ複雑怪奇な話」
『うわー』


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

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

