使用函数c++创建对象

Object Creation with a function c++

本文关键字:创建对象 c++ 函数      更新时间:2023-10-16

我必须在下面的代码中找到一个可能的错误。可能是哪一个?

cObject * CreateObject()
{
    cObject t;
    return &t;
}

您正在从堆栈返回地址。

这个函数的调用者在调用它之后会做什么?

t的寿命是多少?它什么时候结束?

这两者将如何结合起来,带来不幸的后果?

t是函数的局部,它将在右大括号处消亡。返回的指针根本无法使用,但调用方可能会这样做,从而触发Undefined Behavior。

您在堆栈上创建一个临时对象并返回一个指向它的指针。不能保证它在函数完成后仍然存在。

您正在将一个点返回到不存在于函数末尾的本地对象

您正在返回一个指向t的指针,当您从函数返回时,它超出了范围。您应该在函数内部创建一个新指针并返回该指针。

cObject *t = new cObject();
return t;