假设我有这样一个类:classFoo{public:QStringa;voidsetA(QStringval);}并像这样实现setA():voidFoo::setA(QStringval){this->a=val;}并像这样使用它:Foof;QStringv="foo";f.setA(v);我是否在堆栈上复制了两次v结构?一个用于传递参数,另一个用于函数内的赋值,对吗?通过使用voidsetA(QString&val);将避免复制对象两次,因为在第一个中我只是复制一个引用(指针)而不是整个对象,所以唯一的拷贝对象在赋值中:this->a=val; 最佳答案