程序代码: #include <iostream> #include <string> #include <cstdlib> using namespace std; class Complex { private: double real,image; //分别为实部、虚部 public: Complex(double rel=0, double img=0) { real=rel; image=img; } void display() //输出(a+b*i) 、(a-b*i) 、(a)等形式 { cout<<" ("<<real; if (image>0) cout<<"+"<<image<<"*i) "; //虚部为正 else if (image<0) cout<<image<<"*i) "; //虚部为负 else cout<<") "; //虚部为0,即为实数 } Complex operator +(Complex & c); //用成员函数重载 friend ostream &operator <<(ostream &os,const Complex & c); //友元函数重载 friend istream &operator >>(istream &is, Complex & c ); //友元函数重载 }; //友元函数的定义 ostream & operator <<(ostream &os,const Complex & c) { os<<c.real<<"+"<<c.image<<"i"; return os; } istream &operator >>(istream & is, Complex & c ) { string s; is>>s; int pos=s.find("+",0); string sTemp=s.substr(0,pos); c.real=atof(sTemp.c_str()); sTemp=s.substr(pos+1,s.length()-2); c.image=atof(sTemp.c_str()); return is; } //成员函数的类外定义 Complex Complex::operator +(Complex & c) { Complex temp; temp.real=real+c.real; temp.image=image+c.image; return temp; } int main() { Complex c1, c2,c3; cout<<"请输入c1、c2的值,格式:a+bi "<<endl; cin>>c1>>c2; c3=c1+c2; //输出加的结果 cout<<c1<<"+"<<c2<<"="<<c3<<endl; cout<<endl; return 0; }(1)该类有哪几个数据成员?各具有什么功能? (2)构造对象时要完成哪些工作? (3)调用成员函数push_back(int v)如何扩展数组大小? (4)该类怎样实现数组对象的赋值运算?
时间: 2024-03-18 08:45:53 浏览: 51
(1) 该类有两个数据成员,分别为实部和虚部,用于表示复数。
(2) 构造对象时需要初始化实部和虚部,如果没有传入参数,则默认实部和虚部均为0。
(3) 该类没有成员函数push_back(int v),因此无法回答此问题。似乎跟该类的定义也不相关。
(4) 该类无法直接实现数组对象的赋值运算,因为数组对象的赋值需要涉及到内存的拷贝和动态内存分配,而该类并没有涉及到动态内存分配。如果要实现数组对象的赋值运算,需要在该类中定义拷贝构造函数和赋值运算符重载函数,并在其中实现动态内存分配和内存拷贝等操作。
阅读全文