注册 登录
编程论坛 C++教室

请高手帮帮忙编写个程序

lsnpersist 发布于 2009-12-23 19:32, 658 次点击
  包含运算符重载 静态成员函数 友员函数和2个类
  请高手帮帮忙  感激不尽
4 回复
#2
guchao20092009-12-26 22:57
楼主能说的在明白点吗?
#3
faye30002009-12-27 12:09
写哪方面的阿?
#4
yangliangbin2009-12-27 22:40



#include<iostream.h>//不带后缀.h的头文件不支持把成员函数重载为友元函数。
                    //vc++所提供的老形式的带.h的头文件可以支持!!!
//using namespace std;

/****************定义类********************/
class Complex
{
public:
    Complex(){real=0;imag=0;}
    Complex(double r,double i){    real=r;imag=i;}
    Complex operator + (Complex &c2);//两个复数相加的重载函数
    Complex operator + (int &x);//一个整数与复数相加的重载函数
    friend    Complex operator + (int &x,Complex &c1);//定义友元
    void display();
private:
    double real;
    double imag;
};

/******************复数相加*********************/
Complex Complex::operator + (Complex &c2)//两个复数相加
{
    Complex c;
    c.real=real+c2.real;//real是属于c1对象的,this指针!!!
    c.imag=imag+c2.imag;//imag是属于c1对象的
    return c;
}

/*****************复数与整数相加************************/
Complex Complex::operator + (int &x)//一个整数与复数相加
{
    return Complex(x+real,imag);//real与imag是属于c1对象的
}



/*****************整数与复数相加***************************/
Complex operator + (int &x,Complex &c1)//一个整数与复数相加
{

    return Complex(x+c1.real,c1.imag);
}
/*****************输出数据***************************/
void Complex::display()
{
    cout<<"("<<real<<","<<imag<<"i"<<")"<<endl;
}

/****************主函数***************************/
int main()
{
    Complex c1(3,4),c2(5,8),c3,c4,c5;int s=10;
    c3=c1+c2;//调用c1的函数operator + ,以c2为参数
    c4=c1+s;
    c5=s+c1;
    cout<<"c1=";c1.display();
    cout<<"c2=";c2.display();
    cout<<"s="<<s<<endl;
    cout<<"c3=c1+c2=";c3.display();
    cout<<"c4=c1+s=";c4.display();
    cout<<"c5=s+c1=";c5.display();

    return 0;
}
#5
lsnpersist2010-01-03 00:54
谢谢大家了
1