1. 程式人生 > >面向物件實驗二(運算子過載)

面向物件實驗二(運算子過載)

一、實驗目的
1、掌握成員函式過載運算子。
2、掌握友元函式過載運算子。
3、理解並掌握引用在運算子過載中的作用。


二、實驗內容

1、定義空間中的點類(有x,y,z座標),並重載其++和—運算子。編寫主函式對該類進行應用。

#include<iostream>
using namespace std;

class Point
{
private:
    int x,y,z;
public:
    Point(int a=0,int b=0,int c=0);
    Point operator ++();
    Point operator ++(int);
    Point operator --();
    Point operator --(int);
    void print();
};

int main()
{
    Point ob1(2,3,4),ob2;
    ++ob1;
    ob1.print();
    ob2=ob1++;
    ob2.print();
    ob1.print();
    --ob1;
    ob1.print();
    ob2=ob1--;
    ob2.print();
    ob1.print();
    return 0;
}


Point::Point(int a, int b,int c)
{
    x=a;
    y=b;
    z=c;
}

void Point::print()
{
    cout<<'('<<x<<','<<y<<','<<z<<')'<<endl;
}

Point Point::operator ++()
{
    ++x;
    ++y;
    ++z;
    return *this;
}

Point Point::operator ++(int)
{
    Point temp=*this;
    x++;
    y++;
    z++;
    return temp;
}

Point Point::operator --()
{
    --x;
    --y;
    --z;
    return *this;
}

Point Point::operator --(int)
{
    Point temp=*this;
    x--;
    y--;
    z--;
    return temp;
}

2、定義一個複數類,並通過定義運算子過載實現兩個複數可以判別是否相等(==),並給出主函式應用該類。

#include<iostream>
#include<iomanip>
using namespace std;

class com
{
    private:
    int real,imag;
    public:
    com(int a,int b);
    void operator ==(com b);
};



int main()
{
    com ob1(2.2,3.3),ob2(2.2,3.3);
    ob1==ob2;
    return 0;
}

com::com(int a,int b)
{
    real=a;
    imag=b;
}

void com::operator ==(com b)
{
    if((real==b.real)&&(imag==b.imag))
    {
        cout<<"兩複數相等!!"<<endl;
    }
    else
    {
        cout<<"兩複數不相等!!"<<endl;
    }
}