【发布时间】:2016-05-06 04:34:47
【问题描述】:
#include<iostream>
using namespace std;
class Test
{
private:
int x;
int y;
public:
Test (int x = 0, int y = 0) { this->x = x; this->y = y; }
Test setX(int a) { x = a; return *this; }
Test setY(int b) { y = b; return *this; }
void print() { cout << "x = " << x << " y = " << y << endl; }
};
int main()
{
Test obj1;
obj1.setX(10).setY(20);
obj1.print();
return 0;
}
在这个程序中,如果我使用链接函数,x 和 y 的值是:x=10, y=0 而不是 x=10, y=20
如果不是链接函数,我使用: obj1.setX(10) 和 obj1.setY(20) 分别, x 值变为 10 y 值为 20。 谁能解释一下为什么会这样。
【问题讨论】:
-
为我打印 10/20...你确定你不是吗?修改代码后运行错误的可执行文件?
-
您的代码对我来说看起来不错。它也适用于我,使用 g++ 4.8.4。
-
你有没有在这里添加的设置值的方法吗?无论你提出什么作品。
-
按预期工作here。您确定不会忘记代码中设置器的返回类型中的引用吗?
-
对不起,我把问题放错了...只是编辑了它....而不是以下内容:Test& setX(int a) { x = a;返回*这个; } 就是这个 Test setX(int a) { x = a;返回*这个; }