在类point中有个私有成员vectorx和int y[5],分别用=在类定义外给x[0]和y[0]赋值,
但只有y[0]赋值成功,为什么x[0]赋值失败了
int main() {
class point {
public:
point() {x.push_back(1);}
vector getx() { return x; }
int* gety() { return y; }
private:
vectorx;
int y[5];
};
point n;
n.gety()[0] = 5;
cout << “y[0]=”<<n.gety()[0]<<endl;
n.getx()[0] = 5;
cout <<“x[0]=”<< n.getx()[0];
system("pause");
return 0;
}
输出:
y[0]=5
x[0]=1
#include <iostream>
#include <vector>
using namespace std;
class point {
public:
point() {x.push_back(1);}
vector<int>& getx() { return x; } //这里
int* gety() { return y; }
private:
vector<int> x;
int y[5];
};
int main() {
point n;
n.gety()[0] = 5;
cout << "y[0]="<<n.gety()[0]<<endl;
n.getx()[0] = 5;
cout <<"x[0]="<< n.getx()[0]<<endl;
return 0;
}
如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢
楼上正解,一个是值传递,一个是传地址,getx得到的其实是赋值后的一个局部变量。