看板Programming
标 题Re: 请教c++的this传回值
发信站无名小站 (Sun Nov 12 00:47:37 2006)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!wretch
*this 传回 Cal 物件(型别是 Cal...整个class)
this 传回 Cal 物件的指标(型别是 Cal*...Cal的指标)
并不是传回 (*this).x 喔
不用想太复杂啦...
您的code是参考范例断章取义出来的吗?可否post参考原文?
(原文应该有 operator<< 函式吧...)
※ 引述《[email protected] ( )》之铭言:
> 因不知该如何显示出来,所以在这里询问,麻烦大家帮忙
> 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海