itgle.com

有如下程序: include using namespace std; class Complex { double re, im, public有如下程序: #include <iostream> using namespace std; class Complex { double re, im, public: Complex(double r, double i): re(r), im(i) {} double real() const {return re;} double image() c

题目
有如下程序: include using namespace std; class Complex { double re, im, public

有如下程序: #include <iostream> using namespace std; class Complex { double re, im, public: Complex(double r, double i): re(r), im(i) {} double real() const {return re;} double image() const {return im,} Complex& operator +=(Complex a) { re +=a.re; im +=a.im; return *this; } }; ostream& operator << (ostream& s, const Complex& z) { return s<<'('<<z.real()<<','<<z.image()<<')'; } int main() { Complex x(1,-2), y(2,3); cout << (x+=y) << endl; return 0; } 执行这个程序的输出结果是( )。

A.(1,-2)

B.(2,3)

C.(3,5)

D.(3,1)


相似考题
更多“有如下程序: #include <iostream> using namespace std; class Complex { double re, im, public ”相关问题
  • 第1题:

    有以下程序,输出结果()。includeusing namespace std;class Complex{public:Complex(d

    有以下程序,输出结果( )。 #include<iostream> using namespace std; class Complex { public: Complex(double r=0,double i=0):re(r),im(i){} double real()const{return re;} double imagoconst{return im;} Complex operator+(Complex C) const {return Complex(re+c.re,im+c.im);} private: double re,im; }; int main() { Complex a=Complex(1,1)+Complex(5); cout<<a.real()<<'+'<<a.imag()<<'i'<<end1; return 0; }

    A.6+i

    B.2i+5

    C.6+1i

    D.1i+5


    正确答案:C
    解析:由主函数入手,调用“Complex a=Complex(1,1)+Complex(5);”,实际是“Complex a=Complex(1,1)+Complex(5,0);”,调用“return Complex(re+c.re,im+c.im);”结果为:6+1i。

  • 第2题:

    有以下程序: include using namespace std; class Complex{public: Complex(double

    有以下程序: #include <iostream> using namespace std; class Complex { public: Complex(double r=0,double i=0):re(r),im(i){ double zeal() const {return re;} double imag() const {return im;} Complex operator+(Complex c) const { return Complex(re+c.re,im+c.im);} private: double re,im; }; int main() Complex a=Complex(1,1)+Complex(5); cout<<a.real()<<'+'<<a.imag()<<'i'<<end 1; return 0; }程序执行后的输出结果是______。

    A.6+6i

    B.6+1i

    C.1+6i

    D.1+1i


    正确答案:B
    解析:类对“+”重载后,对应的变量相加。

  • 第3题:

    有以下程序:includeusing namespace std;class Complex{public:Complex(dOuble r=0,d

    有以下程序: #include<iostream> using namespace std; class Complex { public: Complex(dOuble r=0,dOuble i=0):re(r),im(i){} doublereal()const{return re;} doubleimag()const{return im;} Complex operator+(Complex c)const {return Complex

    A.6+6i

    B.6+1i

    C.1+6i

    D.1+1i


    正确答案:B
    解析: 运算符”+”在类Complex中作为成员函数重载,实现两个对象的数据成员的相加。所以main函数中语句”Complexa=Complex(1,1)+Complex(5);”的作用相当于”Complexa(1+5,1);”即对象a的数据成员re的值为6,imag的值为l,所以输出为6+1i。

  • 第4题:

    有下列程序:includeusing namespace std;class Complex{double re,im;public:Complex

    有下列程序: #include<iostream> using namespace std; class Complex { double re,im; public: Complex(double r,double i):re(r),im(i){} double real()const{retum re;} double image()const{return im;} Complex& operator+=(Complex A) { r

    A.(1,-2)

    B.(2,3)

    C.(3,5)

    D.(3,1)


    正确答案:C
    解析: 此题考查的是“+”运算符的重载。重载后的“+”运算符的功能是对参数的两部分分别进行加法运算,然后返回复数值。所以x+=y使得对象x(1,2)与y(2,3)的re和im分别相加,最后输出结果(3,5)。

  • 第5题:

    有如下程序: include using namespace std; class Complex { dou

    有如下程序: #include<iostream> using namespace std; class Complex { double re, im; public: Complex(double r, double i): re(r), im(i) {} double real() const { return re; } double image() const { return im; } Complex& operator+= (Complex a) { re += a.re; im += a.im; return *this; } }; ostream& operator<<(ostream& s, const Complex& z) { remm s<<'('<<z.real()<<','<<z.image()<<')'; } int main() { Complex x(1,-2), y(2,3); cout<<(x+=y)<<endl; return 0; } 执行这个程序的输出结果是

    A.(1,-2)

    B.(2,3)

    C.(3,5)

    D.(3,1)


    正确答案:D
    解析:本题考查了运算符重载的综合应用。解本题的关键是要弄明白cout(x+=y)endl;语句是怎么执行的。因为x和y都是Complex类的对象,而Complex类中已经重载了仁运算符,所以表达式x+=y就等价于x.operator+=(y)。该函数将y中的re、 im成员累加到x的对应成员之上,并返回x自身。故表达式(x+=y)返回的值是一个 Complex类对象,其内容为(3,1)。因为运算符的结合性是从左至右的,所以现在要计算的表达式是cout(x+=y),cout是C++语言中预定义的输出流类ostream的对象,所以运算符两边的分量类型正好符合上面的重载函数,故其等价于函数调用operator(cout,(x+=y))。在的重载函数中输出结果是(3,1),最后函数返回并输出一个换行符endl,程序结束。故应该选择D。