用友元实现了对复数的一个加法操作。
很重要的一点是:
如果要创建一个没有初始化的对象,一定要有一个默认构造函数,不然会报错。
- #include<iostream>
- using namespace std;
-
- class Complex{
- private:
- int real;
- int image;
- public:
- Complex(int r,int i){
- real=r;
- image=i;
- }
- Complex(Complex &c0){
- real=c0.real;
- image=c0.image;
- }
- Complex(){
- real=0;
- image=0;
- }
- int get_real(){return real;}
- int get_image(){return image;}
- void Display(){
- if(image>=0){
- cout<<real<<"+"<<image<<"i"<<endl;
- }
- else{
- cout<<real<<image<<"i"<<endl;
- }
- }
- friend Complex AddComplex(Complex c1,Complex c2);
- };
- Complex AddComplex(Complex c1,Complex c2){
- Complex c;
- c.real=c1.get_real()+c2.get_real();
- c.image=c1.image+c2.image;
- return c;
- }
-
- //Complex AddComplex(Complex c1,Complex c2){
- // return Complex(c1.get_real()+c2.get_real() ,c1.get_image() +c2.get_image());
- //}
-
- int main(){
- int x,y;
- cin>>x>>y;
- Complex c0(x,y);
- Complex c1(c0);
- cout<<"c1 is: ";
- c1.Display();
- cin>>x>>y;
- Complex c2(x,y);
- cout<<"c2 is: ";
- c2.Display();
- Complex c3; //在类中要写默认构造函数,不然会报错
- c3=AddComplex(c1,c2);
- cout<<"c3 is: ";
- c3.Display();
- // cout<<" "<<b<<endl;
- // return 0;
- }