■ポリフォーフィズム-----------------------------------------------
class a{
public :
virtual char * out(int)=0;
};
class b : public a{
public :
char * out(int a){
return "bです";
}
};
class c : public a{
public :
char * out(int a){
return "cです";
}
};
void CtestDlg::OnButton1()
{
a *test[2];
test[0]=new b();
test[1]=new c();
TRACE(test[0]->out(1));
TRACE(test[1]->out(1));
}
結果 bですcです
■オーバーライド-----------------------------------------------
class a{
public :
char * out(int){
return "aです";
}
};
class b : public a{
public :
char * out(int a){
char * str=a::out(1);//元のメソッドの読み出し
return str;
}
};
class c : public a{
public :
char * out(int a){//オーバーライド
return "cです";
}
};
void CtestDlg::OnButton1()
{
b *test;
test=new b();
TRACE(test->out(1));
c *test2=new c();
TRACE(test2->out(1));
}
結果 aですcです
■オーバーロード-----------------------------------------------
同じメソッド名でも、引数リストの異なるものは、別のものとして扱われるという事です。
■例外処理-----------------------------------------------
#include <stdio.h>
//例外クラス
class ExceptionA{
public :
void print(){
printf("Aです\n");
}
};
//例外クラス
class ExceptionB{
public :
void print(){
printf("Bです\n");
}
};
//例外クラス
class ExceptionC{};
//例外を発生させるメソッド
void throwExcep(){
throw ExceptionA();//例外をスローする
}
int main(){
try{
throwExcep();//例外を発生させるメソッドを呼び出す
}catch(ExceptionA exc){
printf("例外ExceptionAをキャッチ\n");
exc.print();
}catch(ExceptionB exc){
printf("例外ExceptionBをキャッチ\n");
exc.print();
}catch(...){
printf("その他すべての例外をキャッチ\n");
}
return 0;
}
処理結果
例外ExceptionAをキャッチ
Aです
▲トップページ
>
Windows と C++