我对以下代码有两个问题。
class cls{
int vi;
public:
cls(int v=37) { vi=v; }
friend int& f(cls);
};
int& f(cls c) { return c.vi; }
int main(){
const cls d(15);
f(d)=8;
cout<<f(d);
return 0;
}
答案 0 :(得分:6)
由于const
的参数是按值传递而不是由d
传递,因此不会修改f()
对象作为d
的副本参考。这也是{{1}}未被修改的原因。