C++习题求助大神 感激不尽 设计一个复数类 我的代码如下

class Complex{
public:
Complex(float rnumber=0,int inumber=0);
float rnumber;
int inumber;
//void add(Complex& c);
Complex add(Complex& c);
Complex(Complex &p);
void show();
private:
float real_number;
int imaginary_number;
};
Complex::Complex(Complex &p){
real_number = p.real_number;
imaginary_number = p.imaginary_number;
}

Complex::Complex(float rnumber,int inumber){
real_number = rnumber;
imaginary_number = inumber;
}
Complex Complex::add(Complex& c){
real_number += c.real_number;
imaginary_number += c.imaginary_number;
return c;

}

void Complex::show(){
if(imaginary_number == 0){
cout << real_number << endl;
}
else{
cout << real_number <<(imaginary_number>0? '+' : '-') << imaginary_number << "i" << endl;
}
}

int main(){
Complex c1(3,5);
Complex c2=4.5;
c1.add(c2);
c1.show();

return 0;
}
报错是c2 no matching function for call to ‘Complex::Complex(Complex)’

c2初始化改一下

int main(){
Complex c1(3,5);
Complex c2(4.5);
c1.add(c2);
c1.show();
return 0;
}追问

可以小小解释一下原因吗

追答

不知道。。。
只知道这么改会对 。。。

个人理解 不一定对。
改成Complex c2(4.5)直接调用了构造函数Complex(float rnumber=0,int inumber=0)
于是可以过。

而如果定义 Complex c2=4.5
这样的形式时, 会尝试查找用4.5构造一个Complex对象, 然后用这个临时对象,调用Complex(Complex&)构造函数。
但C++对常量控制很严格, 构造出来的临时对象是const属性的, 而你定义的Complex(Complex&)参数并非const。导致编译出错。
所以另一个修改方式是改构造函数为
Complex(const Complex &p);

追问

谢谢大神!!!!

温馨提示:内容为网友见解,仅供参考
无其他回答

定义一个描述复数的类,数据成员包括实部和虚部;成员函数包括输出复数以 ...
C++实现的复数类,代码如下 \/\/complex.cpp include <iostream> using namespace std;class complex{ \/\/复数类 public:complex(double r=0.0, double i=0.0);complex operator+(const complex& p)const;\/\/重载运算符+ friend ostream& operator <<(ostream& out,const complex& pp);\/\/重载操作...

求C++程序代码: 建立 一个复数类 Complex
} void Complex::out_imaginary2() \/\/不需要参数 { cout<<"复数的虚部为:"<<imaginary<<endl;}void Complex::out_size(){ cout<<"该复数的模为:"<<sqrt(real*real+imaginary*imaginary)<<endl;}void Complex::out_view(){ cout<<"该复数的辐角为:"<<atan(real\/imaginary)<<endl;...

编写一个复数类
1、由于没有指定语言,假设你问的是C++语言吧。2、C++语言实现的复数类代码 include <iostream.h>class plural{\/* 定义私有变量——实部,虚部; *\/ double real; double imag;public: plural( double r = 0.0, double i = 0.0 ) { real = r; imag = i; } \/* 初始化; *\/ do...

急!C++定义一个复数类Complex,使下面的代码能够工作?
Complex c2 = re;c1.show();c2.show();c1.add(c2);c1.show();c2.sub(c1);c2.show();return 0;}

C++设计一个类 实现复数加减乘除的功能,?? 代码版的啊 最好能有注释...
int a1,b1,a2,b2;char temp[32];void add();void cut();void multiply();void divide();private:void init();};void calc::init(){ cout<<"请输入第一个数的实部:";cin>>a1;cout<<"请输入第一个数的虚部:";cin>>b1;cout<<"请输入第二个数的实部:";cin>>a2;cout<<"请输入...

用C++语言设计一个虚数类,要求虚数类中重载运算符加减,主函数定义类...
代码如下:\/*1.复数(实部运算 +虚部运算) 1+2i 1-3i 加:2-i 减 0-5i1 重载实现复数一个输入和输出 普通写法实现输入 调用函数的形式实现输出2. 类重载实现复数的加法和减法 加法:类重载 减法:友元重载*\/#include<iostream>using namespace std;class A{private:int...

(C++)定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算...
friend ostream& operator << (ostream&,Complex&); \/\/声明重载运算符“<<” friend istream& operator >> (istream&,Complex&); \/\/声明重载运算符“>>”private: double real; double imag;};Complex operator +(Complex &c1,Complex &c2){ return Complex(c1.real+c2.real,c1.imag+c2.i...

...2.定义一个复数类complex,使得下面的代码能够工作:(急)
class complex { private:int cx,cy;public:complex(int m,int n){ cx=m;cy=n;} void add(complex nc){ cx+=nc.cx;cy+=nc.cy;} void show(){ cout<<cx<<" + "<<cy<<"i"<<endl;} };

复数运算类:公式推导+代码实现(C++)
在复数运算中,通过代码实现和公式推导,我们探索了复数的正弦值、余弦值、乘幂、n次方根、指数和对数。首先,我们实现了一个复数类,并通过重载运算符简化了加减乘除操作。接着,我们深入探讨了如何计算复数的正弦和余弦值。通过定义复数域的正弦和余弦函数,并代入复数z,我们推导出了计算结果。在C++代码...

c++复数的手写输入 输入一个复数,输出他的实部和虚部 注意是手写输入最...
int signPos = -1,\/\/ +\/-号位置iPos = -1;\/\/ 结尾的i的位置for (int i = len-1; i >-1; i--){if ('i' == strCplx[i])iPos = i;else if ('+' == strCplx[i] || '-' == strCplx[i]){signPos = i;break;}}if (0 == iPos)\/\/ 纯虚数i{cp->r = 0;cp-...

相似回答