void fp(TDshape* p) //传入指针
{
cout << "area:" << p->area() << endl;
p->printName();
}
void fr(TDshape& r) //&是引用符号,表示函数fr的参数r是一个引用类型的参数
{
cout << "area:" << r.area() << endl;
r.printName();
}
int main()
{
Triangle triangle(3, 4); // width为3, height为4
Rectangle rectangle(4, 9); // width为4, height为9
rectangle.setWidth(10);
cout << "******from fp:" << endl;
fp(&triangle);
fp(&rectangle);
cout << "******from fr:" << endl;
fr(triangle);
fr(rectangle);
return 0;
}
1.*
fp
函数的参数是TDshape* p
,即一个指向TDshape
对象的指针。当你调用 fp(&triangle) 或 fp(&rectangle) 时,你需要传递一个指向 Triangle 或 Rectangle 对象的指针,而不是对象本身。因此,你需要使用 & 操作符获取对象的地址,这样就得到了指向对象的指针,才能正确传递给 fp 函数。
2.&
在
void fr(TDshape& r)
中,&
是引用符号,表示函数fr
的参数r
是一个引用类型的参数。通过使用引用作为参数,函数可以直接访问传递给它的对象,而不需要进行对象的复制,从而提高了效率和性能。
TDshape& r
意味着fr
函数的参数r
将引用一个TDshape
对象。当你在main
函数中调用fr(triangle)
和fr(rectangle)
时,传递给fr
函数的是一个对象本身,而不是对象的副本。因此,在函数内部对
r
的任何修改都会直接影响到原始对象。