假设我有这个
std::wstring str = std::to_wstring(100);
str = std::to_wstring(1000); // Is the previous str destroyed?
如果我将局部变量重新分配给另一个变量,旧变量是否被销毁?
答案 0 :(得分:4)
旧的是新的,只有成员被复制。考虑分配的简单实现:
struct foo {
int value;
foo& operator=(const foo& other) {
value = other.value;
return *this;
}
};
分配a = b;
后,对象a
仍是同一对象。如果foo
管理资源,那么operator=
当然必须考虑到这一点,您可以放心地假设所有标准容器都没有损坏。
答案 1 :(得分:0)
先前的
str
是否已销毁?
是。您共享的代码段中没有发生内存管理,而是全部自动存储。