作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] class呼叫成員函式
時間Wed Dec 21 20:44:15 2011
※ 引述《FableKevinS (FableKevinS)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: c++
: 問題(Question):
: 我有一個class Complex (就是複數, 有real跟imag在private裡)
: 其中有兩個member func
: void showXY()const{...cout << real << "+" << imag << "i";...}
: void conj()const{
: this->b=b*-1 //共厄複數
: }
應該是 this->imag = -imag; 才對吧
不過你改了 member 的內容
conj() 後面不應該有 const
: 然後宣告 const Complex test( 1 , 0.5 )
: 並呼叫test.conj().showXY();
如果你要這樣寫
conj() 必需這樣:
Complex& conj() {
this->imag = -imag;
return *this;
}
傳回物件自己,這樣後面才能接 showXY()
: 預期的正確結果(Expected Output):
: 1-0.5i
: 錯誤結果(Wrong Output):
: compile不會過 會說invalid use of void
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.93.206
推 FableKevinS:tks!! 12/21 20:48
推 FableKevinS:好像還是不行 因為我是宣告"const" Complex 12/21 21:10
→ FableKevinS:所以一定要加const 12/21 21:10
→ FableKevinS:這樣會說"assignment of data-member "Complex::test 12/21 21:11
→ FableKevinS:in read-only structure 12/21 21:12
推 elfkiller:why use const 12/21 21:14
推 FableKevinS:題目要求的 12/21 21:15
推 elfkiller:po一下題目 12/21 21:17
推 bibo9901:那就 return 一個新的 Complex 呀... 12/21 21:25
→ PkmX:這樣應該是要return一個新的Complex吧 12/21 21:25
推 elfkiller:在一開始建構的時候做好兩份如何? 12/21 21:26
推 FableKevinS:可以了謝謝! 12/21 21:38
推 asilzheng:例子的角度解答好像有問題? 12/21 23:35
→ WJAider:這樣連續 call member function 不是浪費很多空間? 12/23 14:50
→ PkmX:這就要看編譯器最佳化的能力囉 12/23 21:15