运算符重载练习
Complex类为表示复数的类,两个成员函数分别为real和imag,包含构造析构函数和显示函数,按要求为Complex类重载以下几个运算符函数,并在主函数中进行测试。
1.赋值=:重载为成员函数(必须)
2.加号-:重载为友元函数
3.前置++:重载为友元函数
4.后置++:重载为友员函数
5.判断相等= = :重载为友元函数
主函数进行测试。
#include <iostream>
#include<math.h>
using namespace std;
class Complex
{
public:
double real,imag;
Complex(double r=0.0,double i=0.0):real(r),imag(i){
}
Complex operator = (Complex &a)
{
real=a.real,imag=a.imag;
return *this;
}
friend Complex operator - (Complex &a,Complex &b)
{
return Complex(a.real-b.real,a.imag-b.imag);
}
friend Complex operator ++ (Complex &a,int) //后置++
{
Complex tmp(a);
a.real++,a.imag++;
return tmp;
}
friend Complex &operator ++(Complex &c)
{
c.real++,c.imag++;
return c;
}
friend bool operator == (Complex &a,Complex &b)
{
if(a.real == b.real && a.imag == b.imag) return 1;
return 0;
}
void Print()
{
if(imag>0) cout<<real<<"+"<<imag<<"j"<<'\n';
if(imag<0) cout<<real<<"-"<<imag<<"j"<<'\n';
}
~Complex(){
}
};
int main()
{
Complex c1(1,2),c2;
c2=c1;
c2.Print();
Complex c3(2,3),c4(1,2);
Complex cc;
(c3-c4).Print();
Complex c6(1,2);
(c6++).Print();
(++c6).Print();
Complex c7(1,2),c8(2,3),c9(1,2);
cout<<(c7==c8)<<endl;
cout<<(c7==c9)<<endl;
return 0;
}
工人类01
试建立一个类Worker用于描述职工,具体要求如下:
(1)私有数据成员
unsigned int id: 职工号。
char name[11]:姓名
float salary: 工资。(有一符号常量为工资最低值,设为2000)
int level: 技术等级(1~20级),1级为最低,每个等级差别200元
(2)公有成员函数
Worker ( ):构造函数,初始化数据成员为默认值(自动生成职工号,姓名为空,工资默认最低)。
Worker (…):构造函数(自己定义参数),用参数初始化数据成员。参数有各个数据成员。
void setName(…): 设置职工姓名
void infoList( ): 输出职工的各项信息。
void setLevel(…): 修改技术等级level的值。每增加一个等级工资增加200元。
(3)static变量total计算工资总数和函数Average()计算平均工资。
(4)设置友元函数void setReward(…),给工人。
(5)在主程序中定义N(=3)个Worker对象作为测试数据,完成对Worker类和程序的测试。
(6)在主程序中对其中某个工人发放奖金500元
#include <iostream>
#include <string.h>
using namespace std;
const int N = 3;
int idx=0;
class Worker{
public:
static double total,Average();
int num=0;
Worker()
{
id=0;
name[0]='\0';
w