我的工作類現在鏈接同一對象的方法
但有調用方法(這裏的鏈的問題是代碼
class Point{
public:
int x;
int y;
Point(int i , int j);
Point incrementX();
Point incrementY();
void print();
};
Point::Point(int i, int j){
x = i;
y = j;
}
Point Point::incrementX(){
x++;
return(*this);
}
Point Point::incrementY(){
y++;
return(*this);
}
void Point::print(){
cout << "(" << x << "," << y << ")" << endl;
}
void Q11(){
Point a(2,3);
//(3,4)
a.incrementX().incrementY().print();
//(3,3)why 33 here ??
a.print();
}
我很困惑,爲什麼最後一個代碼a.print()
給人的(3,3)
,我嘗試打印出來的方法
我裏面的this
地址發現兩個地址時,主叫incrementX()
和incrementY()
是不同
我的猜測是,incrementX()
訪問類,但調用incrementY()
上課的時候被佔用。因此,它使堆中類的副本,然後incrementY()
更改Y在副本...
所以(3,4)
被複制印刷,並(3,3)
是由實際的類印刷...
是的......我知道了...... thx! –