在这个简化的示例中,我的问题是:我是否在 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 的“用户”属性会发生什么变化?它被摧毁了吗?它曾经建造过吗?
- 如果我第二次调用 setUser 会发生什么?
- 如果我删除 setUser 中的“&”符号,一切都会好起来的,对吧?因为这就像传递参数的副本,对吗?
我担心我在用记忆做疯狂的事情,因为属性没有被正确地破坏......
谢谢
于 2013 年 2 月 18 日星期一编辑
非常感谢!我真的很感谢你所有的回应......
我不知道编译器提供了默认的重载赋值运算符。现在我知道一切都说得通了……
再次感谢。