对象指针作为参数传递的是实参对象的地址。即实参对象指针和形参对象指针指向同一内存地址,因此若形参对象所指向成员数据的改变是可以影响实参数据成员的。
例如:修改上面的代码,验证对象指针作为函数参数可以修改实参的值
class Square //正方形
{
public:
Square(double len) :length(len) //构造函数
{}
void set(double len) //修改边长
{
length = len;
}
double get()//获取边长的值
{
return length;
}
void show(); //输出面积
private:
double length;//边长
};
void Square::show() //输出面积
{
cout << "正方形面积:" << length * length << endl;
}
void Add(Square *ps)//传递的是指针,形参可以修改实参的值
{
double len = ps->get() + 1; //len=原边长+1;
ps->set(len);//修改ps指向的边长
}
int main()
{
Square s(2);
cout << "边长增加前:" << endl;
s.show();
Add(&s);
cout << "边长增加后:" << endl;
s.show();
return 0;
}