运算符重载

1、 声明一个Time类,包含数据成员minute()sec(),包含成员函数:构造函数和分秒显示函数。定义友元函数重载单目运算符++ Timer,使秒数加1(注意:满60秒进一分钟,此时秒又从0开始算)。主函数中定义Time类对象t(30,45),循环20次,使t每次加1,最后输出分和秒的值。

 

#include<iostream>
using namespace std;
class Time
{
public:
    Time(int m=0,int s=0):minute(m),sec(s){}//要有大括号
    void show();
    friend Time operator++ (Time &);
    friend ostream &operator<<(ostream &p,Time op);//重载输出流
private:
    int minute,sec;
};
ostream &operator<<(ostream &p,Time op)
{
    if(op.sec>60)
        p<<op.minute+1<<'.'<<op.sec-60<<endl;
    else
        p<<op.minute<<'.'<<op.sec<<endl;
    return p;//返回输出
}
void Time::show()
{
    cout<<minute<<'.'<<sec<<endl;
}
Time operator++ (Time &op)
{
    ++op.sec;
    if(op.sec>=60)
    {
        op.sec=op.sec-60;
        op.minute++;
    }
    return op;
}
int main()
{
    Time t(30,45);
    t.show();
    for(int i=0;i<20;i++)
    {
        ++t;
    }
    t.show();

 

    return 0;
}

 

1、 声明Complex类,包含数据成员:realimag;包含成员函数:构造函数、运算符-重载函数(实现实部和虚部的减法运算)和show函数。在类中声明两个友元函数:(1)运算符+重载函数,实现两个复数实部相加;(2)运算符*重载,实现两个复数的乘法(实部和实部相乘,虚部和虚部相乘)。设计主函数,定义若干复数类对象,进行复数类对象的+-*运算,并输出运算结果。

 

#include<iostream>
using namespace std;
class Complex
{
public:
    Complex(int a,int b);
    friend Complex operator+ (Complex op1,Complex op2);
    friend Complex operator* (Complex op1,Complex op2);
    friend ostream &operator<<(ostream &p,Complex op2);
    void show();
private:
    int real,imag;
};
Complex::Complex(int a=0,int b=0)
{
    real=a;
    imag=b;
}
ostream &operator<<(ostream &p,Complex op2)
{
    p<<op2.real;
    if(op2.imag>0)
        p<<'+'<<op2.imag<<'i';
    if(op2.imag<0)
        p<<op2.imag<<'i';
    return p;
}
void Complex::show()
{
    if(imag>0)
        cout<<real<<'+'<<imag<<'i'<<endl;
    else
        cout<<real<<imag<<'i'<<endl;
}
Complex operator+ (Complex op1,Complex op2)
{
    Complex temp;
    temp.real=op1.real+op2.real;
    temp.imag=op1.imag+op2.imag;
    return temp;
}
Complex operator* (Complex op1,Complex op2)
{
    Complex temp;
    temp.real=op1.real*op2.real;
    temp.imag=op1.imag*op2.imag;
    return temp;
}
int main()
{
    Complex t1(2,4),t2(7,5);
    t1.show();
    t2.show();
    return 0;
}
 
第二题跟第一题没太大区别,都是一个类型,粗糙的改了改

 

posted @ 2016-10-27 20:53  小小姐  阅读(175)  评论(0编辑  收藏  举报