从函数调用析构函数返回的对象
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
变量,而不是复制其数据。调用析构函数时,该变量指向的数据已被销毁。
我知道这没有意义...
在 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
变量,而不是复制其数据。调用析构函数时,该变量指向的数据已被销毁。
我知道这没有意义...