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