2个回答
展开全部
程序简化为直接创建一个临时的无名对象作为返回值; .real .imag);&c2)
{
complex c;complex(real*i, imag*i);
}
complex complex::operator /(int &i)
{
return complex(real / i, imag / i);
}
void complex::display()
{
cout << "(" << real << "," << imag << "i)" << endl;
}
int main()
{
complex c1(1, 2), c2(3, 4), c3;
int i = 5;
cout << "c1=";
c1.display();
cout << "c2=";
c2.display();
c3 = c1 + c2;
cout << "c1+c2=";
c3.display();
c3 = c1 - c2;
cout << "c1-c2=";
c3.display();
c3 = c1*c2;
cout << "c1*c2=";
c3.display();
c3 = c1 / c2;
cout << "c1/c2=";
c3.display();
cout << "i=" << i << endl;
c3 = c1 + i;
cout << "c1+i=";
c3.display();
c3 = c1 - i;
cout << "c1-i=";
c3.display();
c3 = c1*i;
cout << "c1*i=";
c3.display();
c3 = c1 / i;
cout << "c1/i=";
c3.display();
return 0;
}
;c, c;c2.real,只不过是因为前面涉及到了实部和虚部操作;
return return complex
{
public:
complex(){ real = complex operator/(complex = i; }
complex operator-(complex imag);&i)
{
.real*c2;complex(double i);
complex r;r::operator *(int ::operator-(complex
&i)
{
.real &c2)
{
complex = real*c2.real - //有参和无参的构造函数
c2.real;(c2;complex;complex(real imag*c2;operator*(complex &complex;
}
complex c.imag .imag*c2;operator+(int &.real i;i);
void display();
private:
double real;complex operator+(complex i);
complex 。
&c2)
{
complex c2.imag;return c;i)
{
return complex(real - complex;-(int &//当运算符重载为友元函数的时候,参数的个数与原来的操作数目是一样的
.real imag :operator imag;
};
//不明白为什么这里的return不能像后面复数与整数相加时的return.
//解答;+ c2.imag) / c,函数的参数的个数要比原来的操作数少一个(后置“++”、“-”除外);
+ i, imag);
}
complex complex:;c;c::operator / ::operator *(complex return return ::operator +(int c2.imag*c2.imag);
c.imag = &c2)
{
complex &c2);
complex complex;
,因此重新构造一个复数类的对象会使程序更加明了。
//后面只是用到了实部,因此不需要浪费内存空间,重新申请一个新的复数类的对象(乘除除外);
}
//复数与整数之间的操作
complex i){ real = imag
::operator+(complex .imag;
c.imag = i);
complex .real real*c2;
&c2);//运算符的重载; imag*c2;
c;c;c2);c;(imag*c2.real - / (c2.real*c2.real + double + imag*c2.imag) .real = (real*c2;return c;= real + .real
complex;(complex .imag ,因为成员函数都是通过该类的某个对象来访问的;
}
complex ,程序的运行效率更高
//复数和复数的操作运算
complex
= 0; } double + real*c2.imag;
}
complex c;
= imag + c2.imag;//当运算符重载为类的成员函数时的时候;operator-(int &= imag - = real - ,
}
complex c;complex:还不都是一样的;operator/(int &operator*(int &&c2);
complex 。因为本身的‘+’只能是对基本类型数据进行操作,现在想要对复数类也进行操作。那么必须要重载,重新定义其为我们需要的功能
,成员函数中有一隐含的参数this指针,this指针
//指向当前的对象,而当前的对象本身就是其中的一个操作数;0;namespace std;
/*
1.同一个运算符可以代表多个不同的功能,编译系统是根据操作的数据来判别该执行具体哪一个功能的
*/
class
#include<iostream>
using
{
complex c;complex(real*i, imag*i);
}
complex complex::operator /(int &i)
{
return complex(real / i, imag / i);
}
void complex::display()
{
cout << "(" << real << "," << imag << "i)" << endl;
}
int main()
{
complex c1(1, 2), c2(3, 4), c3;
int i = 5;
cout << "c1=";
c1.display();
cout << "c2=";
c2.display();
c3 = c1 + c2;
cout << "c1+c2=";
c3.display();
c3 = c1 - c2;
cout << "c1-c2=";
c3.display();
c3 = c1*c2;
cout << "c1*c2=";
c3.display();
c3 = c1 / c2;
cout << "c1/c2=";
c3.display();
cout << "i=" << i << endl;
c3 = c1 + i;
cout << "c1+i=";
c3.display();
c3 = c1 - i;
cout << "c1-i=";
c3.display();
c3 = c1*i;
cout << "c1*i=";
c3.display();
c3 = c1 / i;
cout << "c1/i=";
c3.display();
return 0;
}
;c, c;c2.real,只不过是因为前面涉及到了实部和虚部操作;
return return complex
{
public:
complex(){ real = complex operator/(complex = i; }
complex operator-(complex imag);&i)
{
.real*c2;complex(double i);
complex r;r::operator *(int ::operator-(complex
&i)
{
.real &c2)
{
complex = real*c2.real - //有参和无参的构造函数
c2.real;(c2;complex;complex(real imag*c2;operator*(complex &complex;
}
complex c.imag .imag*c2;operator+(int &.real i;i);
void display();
private:
double real;complex operator+(complex i);
complex 。
&c2)
{
complex c2.imag;return c;i)
{
return complex(real - complex;-(int &//当运算符重载为友元函数的时候,参数的个数与原来的操作数目是一样的
.real imag :operator imag;
};
//不明白为什么这里的return不能像后面复数与整数相加时的return.
//解答;+ c2.imag) / c,函数的参数的个数要比原来的操作数少一个(后置“++”、“-”除外);
+ i, imag);
}
complex complex:;c;c::operator / ::operator *(complex return return ::operator +(int c2.imag*c2.imag);
c.imag = &c2)
{
complex &c2);
complex complex;
,因此重新构造一个复数类的对象会使程序更加明了。
//后面只是用到了实部,因此不需要浪费内存空间,重新申请一个新的复数类的对象(乘除除外);
}
//复数与整数之间的操作
complex i){ real = imag
::operator+(complex .imag;
c.imag = i);
complex .real real*c2;
&c2);//运算符的重载; imag*c2;
c;c;c2);c;(imag*c2.real - / (c2.real*c2.real + double + imag*c2.imag) .real = (real*c2;return c;= real + .real
complex;(complex .imag ,因为成员函数都是通过该类的某个对象来访问的;
}
complex ,程序的运行效率更高
//复数和复数的操作运算
complex
= 0; } double + real*c2.imag;
}
complex c;
= imag + c2.imag;//当运算符重载为类的成员函数时的时候;operator-(int &= imag - = real - ,
}
complex c;complex:还不都是一样的;operator/(int &operator*(int &&c2);
complex 。因为本身的‘+’只能是对基本类型数据进行操作,现在想要对复数类也进行操作。那么必须要重载,重新定义其为我们需要的功能
,成员函数中有一隐含的参数this指针,this指针
//指向当前的对象,而当前的对象本身就是其中的一个操作数;0;namespace std;
/*
1.同一个运算符可以代表多个不同的功能,编译系统是根据操作的数据来判别该执行具体哪一个功能的
*/
class
#include<iostream>
using
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
divmod(a,b)方法返回的是a//b(地板除)以及a对b的余数,如下
>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)
>>> (1+2j)//(1+0.5j)
(1+0j)
>>> (1+2j)%(1+0.5j)
1.5j
所以divmod运行结果如下
>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)
>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)
>>> (1+2j)//(1+0.5j)
(1+0j)
>>> (1+2j)%(1+0.5j)
1.5j
所以divmod运行结果如下
>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询