ポリモルなんとか。@C++

懸賞 2009年 09月 23日 懸賞

要はこういうことか?



^^-^--^-^^-^-^-^-^-^--^-^^-^-^^^----^--^^-^^--^-^-^-^-^-^-^-^-^-^-^^-^-^-


※「継承」、「抽象クラス(インタフェース)」、「インスタンス動的確保」……っていうのを知っておく必要あり。






#include<stdio.h>

/* インターフェース(抽象)クラス */
class Interface{
public:
virtual void nantoka(int n)=0;//何かやる(未定)。
};


/* ↑を継承した誰かさんが3人 */

/* 誰かさん1 */
class Darekasan1:public Interface{
public:
void nantoka(int n);//ループ処理&出力をやる予定。
};

/* 誰かさん2*/
class Darekasan2:public Interface{
public:
void nantoka(int n);//もらった値を5で割って出力する予定。
};

/* 誰かさん3*/
class Darekasan3:public Interface{
public:
void nantoka(int n);//n回"*"を出力
};



/* 各々の処理 */


/* 誰かさん1の「何とか」の処理(ループ出力) */
void Darekasan1::nantoka(int n){
for(int i=0; i<n; i++) printf("誰かさん1:%d回目\n",i);
}

/* 誰かさん2の「何とか」の処理(5で割って出力) */
void Darekasan2::nantoka(int n){
printf("誰かさん2を5で割るとは%dです。\n",n/5);
}

/* 誰かさん3の「何とか」の処理(n回だけ" * "を出力) */
void Darekasan3::nantoka(int n){
puts("誰かさん3の処理:");

for(int i=0; i<n; i++){
putchar('*');
}
}




/* メイン関数 */
int main(void){
const int MAX=3;//「誰かさん」の人数

Interface *pDare[MAX];//「誰かさん」がMAX人

/* インスタンス生成(動的にね) */
pDare[0]=new Darekasan1;//誰かさん1
pDare[1]=new Darekasan2;//誰かさん2
pDare[2]=new Darekasan3;//誰かさん3

/* 各「誰かさん」の内部処理 */
for(int i=0; i<MAX; i++){
pDare[i]->nantoka(10);
}

/* インスタンス廃棄 */
for(int i=0 ; i<MAX; i++){
delete pDare[i];
}

return(0);
}


/* 出力結果 */

誰かさん1:0回目
誰かさん1:1回目
誰かさん1:2回目
誰かさん1:3回目
誰かさん1:4回目
誰かさん1:5回目
誰かさん1:6回目
誰かさん1:7回目
誰かさん1:8回目
誰かさん1:9回目
誰かさん2を5で割るとは2です。
誰かさん3の処理:
*********

/* 出力ここまで */

/E

[PR]

by Lowen_ash | 2009-09-23 21:19 | +プログラミング

<< 夜明け色。   17K >>