gpt4 book ai didi

C++ 新运算符作用域

转载 作者:行者123 更新时间:2023-11-27 23:06:02 25 4
gpt4 key购买 nike

所以我正在编写一段代码,其中我使用 new 运算符在局部范围函数内创建一个对象,并将引用作为指针返回。

A* operator+(A that){
int sumA = a + that.getA();
int sumB = b + that.getB();
return new A(sumA, sumB);
}

在我看来这是行不通的,因为对象是在本地范围内创建的,应该是临时的,但它编译并运行了。任何人都可以向我解释一下吗?我敢肯定还有其他一些东西有能力打破范围之类的东西。如果可能的话,你能给我一些例子吗?赞赏!

最佳答案

当您说“在本地范围内创建”时,您真正的意思是“一个自动变量”。自动变量在创建它们的范围退出时自动销毁。

但是 new 不会创建自动变量。它创建一个动态分配的对象,其生命周期不受其创建范围的限制。

new A(sumA, sumB) 创建的对象不是临时对象

关于C++ 新运算符作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23508156/

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