以下の状況で起こる挙動を確認したいです。次のように定義されたいくつかの関数があるとします。
std::vector<Object*> FuncA()
Result FuncB()
result はコンストラクタを持つクラスです
Result(const std::vector<Object*>& result)
{
this->result = result;
}
ここで、FuncB は次のことを行います。
Result FuncB() {
... some stuff here ...
return Result(FuncA())
}
FuncA によって返されたベクトルはいつ破棄されますか (そのデストラクタが呼び出されます)? Result が範囲外になったときでしょうか。それへの参照を保持する結果は、その寿命を延ばしますか? そうでない場合は、理由と、私が求めていることを達成する方法を説明していただけますか?
ありがとう
編集:これが結果クラスです
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);
};