KAIHATSUGIKEN GROUP
********************************************************************************
24 演算子のオーバーロード
特定のクラスにおける演算子の意味を変える処理のことです。
演算子の意味とは、たとえば「+」が加算のために使われますが暮らすstringを定義して
「+」は文字列同士を連結させることが出来ます
演算子のオーバーロードをするためにはキーワードoperatorを使います。
特定のクラスにおいて演算子をオーバーロードする場合はそのクラスに固有のものとなる。
それ以外の部分ではその演算子の元の意味で使うことが出来ます。
********************************************
#include <iostream.h>
#include <string.h>
class string {
public:
string(char *);
void operator +(char *);
void operator -(char);
void show_string(void);
private:
char data[256];
};
string::string(cahr *str)
{
strcpy(data,str);
}
void string::operator +(char *str)
{
strcat(data, str);
}
void string::operator -(char letter)
{
char temp[256];
int i,j;
for (i = 0, j = 0; data[i]; i++)
if (data[i] != letter)
temp[j++] = data[i];
temp[j] = NULL;
strcpy(data,temp);
}
void string::show_string(void)
{
cout << data << endl;
}
void main(void) //ここから始まる
{
string title("Rescued By C++"); //文字列をstringオブジェクトのtitleに代入
string lesson("Understanding Operator Overloading");
//文字列をstringオブジェクトのlessonに代入
title.show_string(); //関数show_stringへtitleの値を渡す
title + " rescued me!";
title.show_string()
lesson.show_string();
lesson. -'n';
lesson.show_string();
}
****************************
#include <iostream.h>
#include <string.h>
class string { //クラス名stringを生成
public:
string(char *);
void operator +(char *); //オーバーロードするための関数を定義
void operator -(char); //オーバーロードするための関数を定義
void show_string(void); //関数show_stringを定義
private:
char data[256]; //char型変数dataの配列を256列準備
};
string::string(cahr *str) //クラスのstringから値をコピー
{
strcpy(data,str);
}
void string::operator +(char *str) //クラスのstringから値をコピー
{
strcat(data, str);
}
void string::operator -(char letter) //クラスのstringから値をコピー
{
char temp[256]; //char型変数tempの配列を256列準備
int i,j; //int型整数i j を準備
for (i = 0, j = 0; data[i]; i++)//i j の値を初期化してインクリメント
if (data[i] != letter)
temp[j++] = data[i];
temp[j] = NULL;
strcpy(data,temp); //dataとtempの文字列をコピー
}
void string::show_string(void)
{
cout << data << endl; //dataの値を出力
}
void main(void)
{
string title("Rescued By C++");
string lesson("Understanding Operator Overloading");
title.show_string();
title + " rescued me!"; //文字列の追加
title.show_string()
lesson.show_string();
lesson. -'n'; //文字列の削除
lesson.show_string();
}