我希望 freeFunct 在它自己的对象 a 副本上做非常量的事情。
假设 freeFunct 必须是一个自由函数,因为在实际代码案例中,它需要许多不同的参数,从所有这些参数中调用几个公共函数,并且将其设为任何类的非静态成员函数是没有意义的。
我想到了三种不同的声明方式。
我觉得第三种解决方案更糟糕。
前两者有区别吗?
有更好的吗?
void freeFunct1(A a){
a.doStuff();
}
void freeFunct2(const A& a){
A b = a;
b.doStuff();
}
/**users of freeFunct3 are expected
*to give a copy of their variable:
*{
* A b = a;
* freeFunct3(b);
*}
*/
void freeFunct3(A& a){
a.doStuff();
}