假設以下兩類:處置
struct A {
A() {}
};
struct B {
B(const A& a) {}
};
它發生在我多次遇到這樣的情況,我必須以建立創建一個類的臨時實例我需要使用的一個實例。喜歡的東西:
A a;
// Do very complex computations using a;
B b(a);
// use b, a is not needed anymore.
return make_result(b);
我的問題是,有時我的計算後a
持有的資源可以是顯著的,我實例b
後,我想將他們釋放。與此同時,整個過程a -> b -> result
在邏輯上是一個非常緊湊的東西,我想避免把它分解成函數,因爲在這種情況下會有pretty much nothing to gain。
C++中有哪些可用的解決方案來解決這類問題?
我真的不明白你的問題是什麼。如果您需要保持A對'result'使用的資源有意義,請保留它們。如果你不這樣做,通常在A的析構函數中釋放它們。所有「在C++中可用的解決方案」都是* that *:釋放你沒有使用的東西。 – meagar 2014-11-08 15:08:02
將'a'移動到'b'? 'b b(std :: move(a));' – pmr 2014-11-08 15:08:16
'b'通常不需要保留'a',只是爲了處理它的內部。問題是你不能真的調用'''析構函數。你會怎麼做? 'a'通常不會被破壞,直到它的作用域結束。它的作用域必須包含整個'b',因爲'b'只能用'a'創建。 – Svalorzen 2014-11-08 15:13:19