因此,我正在编写一段代码,其中使用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++ - C++新的运算符范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23508156/

10-11 23:19
查看更多