演算子のオーバーロード
运算符重载
機能を定義することができる
ふつうのメンバー関数を定義、演算子の定義に変える
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;
class Monster
{
char name[256];
int hp;
public:
Monster():hp(10) {}
Monster(const char* P, int h = 10)
{
strncpy(name, P, 256);
hp = h;
}
Monster Add(const Monster &m)const
{
Monster tmp;//一時メモリ
//名前の合成
strncpy(tmp.name, name, 256);
strncat(tmp.name, m.name, 256);
//hpの合成
tmp.hp = hp + m.hp;
return tmp;
}
void Print()
{
printf("名前:%s、HP%d\n,", name, hp);
}
Monster operator +(const Monster &m)const
{
Monster tmp;//一時メモリ
//名前の合成
strncpy(tmp.name, name, 256);
strncat(tmp.name, m.name, 256);
//hpの合成
tmp.hp = hp + m.hp;
return tmp;
}
};
int main()
{
Monster N("Nakagomi", 250);
Monster T("Taiyo", 120);
Monster NT;
NT = N + T;
//NT = N.Add(T);
NT.Print();
cin.get();
return 0;
}
課題08 「演算子オーバーロード」
好きなクラスを作り 演算子を定義する、その機能を試すサンプルプログラムを作成する。
期限 11/11
版权声明:本文为qq_36028073原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。