Re: 請教c++的this傳回值
*this 傳回 Cal 物件(型別是 Cal...整個class)
this 傳回 Cal 物件的指標(型別是 Cal*...Cal的指標)
並不是傳回 (*this).x 喔
不用想太複雜啦...
您的code是參考範例斷章取義出來的嗎?可否post參考原文?
(原文應該有 operator<< 函式吧...)
※ 引述《jiannrong@kkcity.com.tw ( )》之銘言:
> 因不知該如何顯示出來,所以在這裡詢問,麻煩大家幫忙
> c++可以有this與*this,而我現在想了解這兩種的傳回值
> 不知該怎麼寫
> 附上這兩個程式碼,麻煩各位點破我的迷思,謝謝
> #include <iostream>
> #include <cstdlib>
> using namespace std;
> class Cal
> {
> int x;
> public:
> Cal(int n) { x = n; } //建立者函數
> Cal calcSum(Cal obj) { //加法運算
> x += obj.x; //x = x + obj.x
> return *this; //傳回(*this).x
> }
> };
> int main() {
> Cal a(100), b(200), c(0); //定義 a.x=100, b.x=200
> c = a.calcSum(b); //計算 c.x = a.x + b.x
> // cout<<"c :"<<c<<endl; //如何顯示出 (*this).x ??
> system("PAUSE");
> return 0; //程式正常結束
> }
> 第二個程式
> #include <iostream>
> #include <cstdlib>
> using namespace std;
> class Cal
> {
> int x;
> public:
> Cal(int n) { x = n; } //建立者函數
> Cal *calcSum(Cal obj) { //加法運算
> x += obj.x; //x = x + obj.x
> return this; //傳回this->x
> }
> };
> int main() {
> Cal a(100), b(200), c(0); //定義 a.x=100, b.x=200
> c = a.calcSum(b); //計算 c.x = a.x + b.x
> // cout<<"c :"<<c<<endl; //如何顯示出 this->x ??
> system("PAUSE");
> return 0; //程式正常結束
> }
--
信言不美,美言不信
善者不辯,辯者不善
知者不博,博者不知
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止218-163-120-51.dynamic.hinet.net海
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章