3-3-2. 二項演算子のオーバーロード
公開日: 21:35 3. オブジェクト指向編/3-3. オーバーロード/3-3-2. 二項演算子のオーバーロード
二項演算子は2つの引数を取ります。加算(+)、減算(-)、除算(/)演算子は頻繁に使います。
次の例はどのようにして加算演算子がオーバーロードされるかの例です。似た方法で減算、除算演算子もオーバーロードできます。
#include <iostream>
using namespace std;
class Box
{
double length; // 箱の縦幅
double breadth; // 箱の横幅
double height; // 箱の深さ
public:
double getVolume(void)
{
return length * breadth * height;
}
void setLength( double len )
{
length = len;
}
void setBreadth( double bre )
{
breadth = bre;
}
void setHeight( double hei )
{
height = hei;
}
// 2つのBoxオブジェクトを加算するため+演算子をオーバーロード
Box operator+(const Box& b)
{
Box box;
box.length = this->length + b.length;
box.breadth = this->breadth + b.breadth;
box.height = this->height + b.height;
return box;
}
};
// プログラムの開始
int main( )
{
Box Box1; // Box型のBox1の宣言
Box Box2; // Box型のBox2の宣言
Box Box3; // Box型のBox3の宣言
double volume = 0.0; // 箱の体積を保存
// box 1の仕様
Box1.setLength(6.0);
Box1.setBreadth(7.0);
Box1.setHeight(5.0);
// box 2の仕様
Box2.setLength(12.0);
Box2.setBreadth(13.0);
Box2.setHeight(10.0);
// box 1の体積
volume = Box1.getVolume();
cout << "Box1の体積 : " << volume <<endl;
// box 2の体積
volume = Box2.getVolume();
cout << "Box2の体積 : " << volume <<endl;
// 2つのオブジェクトを加算
Box3 = Box1 + Box2;
// box 3の体積
volume = Box3.getVolume();
cout << "Box3の体積 : " << volume <<endl;
return 0;
}
上のコードをコンパイルし実行すると、次の結果が得られます。Box1の体積 : 210
Box2の体積 : 1560
Box3の体積 : 5400
0 件のコメント :
コメントを投稿