0

次のコードについて2つの質問があります。

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;
}
  1. f(d)= 8がconstオブジェクトを変更しようとするのに、なぜコンパイルするのですか?
  2. const属性を削除した後でも、なぜ15が出力されるのですか?
4

1 に答える 1

6

参照ではなく値によって渡されるという引数のためにコピーが作成されているため、constオブジェクトを変更していません。これは、変更されていないため変更されていない理由でもあります。df()d

于 2012-09-21T10:16:49.670 に答える