从函数调用析构函数返回的对象

Object Returned from Function Calls Destructor

C++ 中,我有一个函数,它 return 是第一个 class 对象的值,如下所示:

Image Video::getFrame(int frame) {
    Image img(...);

    ... processing ...

    return img;
}

值被 returned 并且 img 超出范围后,调用 Image 析构函数,销毁对象内的所有数据。因此,每当我这样做时:

Image frame = video.getFrame(10);

frame 看起来好像完全未初始化。

我认为按值 return 应该制作 img 的完整、单独的副本。不知何故,我误解了发生了什么。我该如何克服这个问题?

注:Image中的None个成员变量是指针

我刚刚发现原因。一个小的差异,结果是一个大问题。 frame 的类型是 Image* 而不是 Image。因此,它指向函数内的 img 变量,而不是复制其数据。调用析构函数时,该变量指向的数据已被销毁。

我知道这没有意义...