KAIHATSUGIKEN GROUP

C++ PROGRAMMING LANGUAGE




********************************************************************************
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();
}