vs c++ 关于类中vector成员的一些问题

在类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得到的其实是赋值后的一个局部变量。