C++中的复数赋值

2024-11-08 23:42:55
推荐回答(3个)
回答1:

#include
#include
using namespace std;
struct branch{
int begin,end;
double r,x;
complex num;
};
int main(){
branch branch1;
branch1.r=1;
branch1.x=2;
branch1.num(branch1.r,branch1.x);// 改为branch1.num=complex::complex(branch1.r,branch1.x);原因是主函数开头你已经定义了一个branch对象,同时也就定义了体内的num成员(即调用complex的默认构造函数),如果想对他进行赋值,就不能用这样的方式,只能用operator=来实现
return 0;
}
//楼主:标准complex已经定义了operator=所以就像上面这样直接调用就行。如果你还想知道标准complex的其他接口的话,你可以在源文件中输入(在此之前,先Ctrl+F7):
"complex::",当你输入第二个冒号时,会弹出个列表,里面全都是complex类中的接口以及成员,operator=是在其中的

//楼主:你定义的结构体
struct branch{
int begin,end;
double r,x;
complex num;
};
所以你写诸如:
branch obj;时编译器在“暗地”里是调用了complex的默认构造函数(这时的num.re==0,num.im==0),也就是说此时num已经被初始化了(即已经存在),而能做到初始化就是构造函数的职责,而不管是什么对象只能初始化一下(就像每个人都只出生一次一样),以后再想对它进行修改就不能用构造函数实现,只能用赋值方式。赋值和初始化是不等价的,楼主一定要弄清楚这一点。不明白的话,可以继续问哈,(∩_∩)

先构造一个临时对象:complex temp(YouWant,YouWant);
然后赋值给obj.num;即:obj.num=temp;
就行了。

回答2:

有问题~~
complex num
尖括号里面的 必须是类名 而double 不是一个类故这样是不对滴

其他应该没有什么问题了

回答3:

看不懂你这个程序啊
。你把实部和虚部封装成类,然后重载运算符输入输出,这样不就很简洁了吗