亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c++改錯怎么改?

c++改錯怎么改?

C++
灬elliott 2016-07-02 16:30:35
#include <iostream.h>#include "stdlib.h"class CComplex{public:CComplex(double r = 0, double i = 0){? real = r;? imag = i;}int operator int(){? return (int)real;}void Display(void){? cout << "(" << real << "," << imag << ")" << endl;}protected:double real;double imag;};class CVector{public:CVector(CComplex &obj1, CComplex &obj2, CComplex &obj3, CComplex &obj4){? objArray[0] = obj1;? objArray[1] = obj2;? objArray[2] = obj3;? objArray[3] = obj4;}friend CComplex &operator[](CVector obj, int n);private:CComplex objArray[4];};CComplex &operator[](CVector obj, int n){if(n<0 || n>3){? cout<<"Out of range!"<<endl;? exit(0);}return obj.objArray[n];}void main(){CComplex c1(1.1, 1.1);CComplex c2(2.2, 2.2);CComplex c3(3.3, 3.3);CComplex c4(4.4, 4.4);CVector v(c1,c2,c3,c4);v[0].Display();v[1].Display();v[2].Display();v[3].Display();v[0] = 5.5; ----------------------------------------------------------①v[1] = CComplex(6.6); -------------------------------------------②v[2] = int(CComplex(7.7)); --------------------------------------③v[3] = int(CComplex(8.8,9.9)); ----------------------------------④v[0].Display();v[1].Display();v[2].Display();v[3].Display();}
查看完整描述

1 回答

已采納
?
onemoo

TA貢獻883條經驗 獲得超454個贊

  1. CComplex 中的轉型函數?operator int() 前面不用寫返回類型

  2. 重載下標操作符?operator[] 必須是成員函數。 當然其參數只需要一個int就可以了。

  3. main函數的返回類型是int,不要寫成void。


查看完整回答
1 反對 回復 2016-07-03
  • 灬elliott
    灬elliott
    1,2是顯示轉換還是隱式轉換,為什么,3.4的轉換過程是啥
  • onemoo
    onemoo
    因為你沒有定義賦值函數,編譯器自動生成的賦值函數要求等號右側操作數也是CComplex類型。 1.等號右側是浮點型5.5,會隱式轉換為CComplex類型(5.5,0.0)。 2.等號右側顯式構造了一個CComplex。 3和4.先是顯式構造了一個CComplex。然后按照你定義的轉型函數,顯式轉型為int。隨后再隱式轉換為CComplex。
  • 灬elliott
    灬elliott
    謝謝啦
  • 1 回答
  • 0 關注
  • 2242 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號