gpt4 book ai didi

c++ - 当在 C++ 中重新分配对象变量时,原始对象会发生什么?

转载 作者:IT王子 更新时间:2023-10-28 23:35:17 26 4
gpt4 key购买 nike

在 C++ 中重新分配对象变量时,原始值会发生什么变化?在下面的代码中,一个对象被创建到堆栈上并放置在 variable 中。然后在堆栈上创建一个新对象并放置在同一个变量中。原始对象会发生什么?在 variable 超出范围之前,它会一直留在堆栈上吗?

void foo() {
ClassName variable(a, b); // variable created on the stack
variable = ClassName(c, d); // new value for variable created on stack
...
}

最佳答案

发生的情况是调用了类的赋值运算符。在大多数情况下,这只意味着旧对象的内容会使用新对象的值进行更新。所以如果 ClassName 是:

struct ClassName
{
int a;
int b;

ClassName(int a, int b) : a(a), b(b) {}
};

在这种情况下,将调用默认的赋值运算符,相当于:

    ClassName& operator=(const ClassName& other)
{
a = other.a;
b = other.b;
return *this;
}

对于具有动态内容的类,需要做更多的工作,但结果通常是相同的。由于赋值运算符可以被覆盖,理论上任何事情都可能发生,但这是我们所期望的。

关于c++ - 当在 C++ 中重新分配对象变量时,原始对象会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27494342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com