C ++变量销毁

时间:2020-09-17 18:45:29

标签: c++ memory-management scope

假设我有这个

std::wstring str = std::to_wstring(100);
str = std::to_wstring(1000); // Is the previous str destroyed?

如果我将局部变量重新分配给另一个变量,旧变量是否被销毁?

2 个答案:

答案 0 :(得分:4)

旧的是新的,只有成员被复制。考虑分配的简单实现:

struct foo {
    int value;
    foo& operator=(const foo& other) {
       value = other.value;
       return *this;
    }
};

分配a = b;后,对象a仍是同一对象。如果foo管理资源,那么operator=当然必须考虑到这一点,您可以放心地假设所有标准容器都没有损坏。

答案 1 :(得分:0)

先前的str是否已销毁?

。您共享的代码段中没有发生内存管理,而是全部自动存储。

相关问题