无&却可以改变r1的值

#include

using namespace std;

class Rectangle{

 private:

 double height;

 double width;

 public:

 Rectangle(double newheight=1,double newwidth=1){

 height=newheight;

 width=newwidth;

 cout<<"Constructor is called"<void set(double newheight,double newwidth){

 height=newheight;

 width=newwidth;

 }

 double getHeight(){

 return height;

 } 

 double getWidth(){

 return width;

 }

 double getArea(){

 return height*width;

 } 

 double getPerimeter(){

 return 2*(height+width);

 }

 

}; 

int main(){

 Rectangle r1;

 Rectangle r2(3,4);

 cout<getHeight()<<" "<getWidth()<set(40,4);

 cout<getHeight()<<" "<getWidth()<getArea()<<" "<getPerimeter()<return 0;

}

此题void set()函数没有使用&,但是为什么可以改变r1的值

因为void set()函数里面把值赋值给了成员变量 height、width;然后r1.getHeight()和r1.getWidth()获取到的是set传进来的值