この単純化された例では、私の質問は次のとおりです: Action::setUser() 内で正当な代入を行っていますか?
class User {
private:
int age;
public:
int getAge() { return age; }
};
class Action {
private:
User user;
public:
void setUser(User &u) {
user = u;
}
};
int main() {
User u;
Action a;
a.setUser(u);
return 0;
}
私を騒がせているのは、
- setUser が呼び出されると、Action の「user」属性はどうなりますか? それは破壊されていますか?それは今までに構築されましたか?
- setUser をもう一度呼び出すとどうなりますか?
- setUser の "&" 記号を削除すれば、すべて問題ありませんよね? それは、パラメーターのコピーを渡すようなものだからですよね?
属性が正しく破棄されていないため、メモリでクレイジーなことをしているのではないかと心配しています...
ありがとうございました
編集日: 2013 年 2 月 18 日
どうもありがとう!皆様の回答、本当に有難う御座いました…
コンパイラがデフォルトのオーバーロード代入演算子を提供していることを知りませんでした。今では、すべてが完全に理にかなっていることがわかりました...
再度、感謝します。