我想確認在以下情況下會發生的行爲。假設我有定義爲一些功能:何時銷燬對象?
std::vector<Object*> FuncA()
Result FuncB()
如果結果與構造
Result(const std::vector<Object*>& result)
{
this->result = result;
}
現在一個班,FuncB執行以下操作:
Result FuncB() {
... some stuff here ...
return Result(FuncA())
}
當將矢量通過FuncA的返回被銷燬(有它的析構函數)?當結果超出範圍時會不會發生?持有對它的引用延長其生命期嗎?如果不是,你能解釋爲什麼,也許是一種方法來實現我所追求的?
感謝
編輯:下面是結果類
class Result
{
private:
std::vector<Object*> result;
void SetData(const Result& other);
void Free();
// Constructs the result and takes ownership of the memory.
Result(const std::vector<Object*>& result);
Result();
public:
Result(const Result& other);
Result& operator=(const Result& rhs);
~Result();
const Object& operator [] (int index);
};
請張貼'Result'的定義。答案取決於內部存儲的內容。 –
添加了定義 – user1520427
不要使用指針矢量,它會很容易造成內存泄漏。如果你不想'std :: vector