私は、コードを書いていると私は参照&についての質問があります。この場合C++リファレンス&およびメモリ
class A{
private:
int num;
public:
void set(const int& a){num = a;}
void foo(){
int a = 4;
set(a);
}
void print(){
cout << num << endl;
}
};
int main(){
A a;
a.foo();
a.print();
return 0;
}
は、変数a
はfoo()
の終わりに破棄されます。 set
を参照すると、a
のアドレスとnum
が更新されます。したがって、このコードは間違っています(numは削除されたメモリを指します)?またはset
は、値(アドレスではない)のnumをnumに設定しますか?
私はa
とnum
のアドレスのcout
でコードを編集して、彼らが異なっているので、私はa
のnum個のコピー値と思います。コードを実行すると、すべて動作するように見えますが、わかりません。
'num = a;'はコピーをとりますが、特別なものはありません。 _ "numは削除されたメモリを指します" _ numはメモリを指しません。これはプレーンなクラスメンバ変数です。 –
アドレスのコピーではなく、アドレスのコピー? – linofex
_ "そのアドレスのコピーではなく、アドレスのコピー?" –