我要讓「懶結構」在C++類,一個簡單的方法,這樣做是這樣的:如何在C++中執行惰性構造?
#include "b.hpp" // class B
class A {
public:
// invoke B() in b.hpp, this constructor do not actually do init
A(int v_in) : v(v_in) {}
void foo() {
if(flag == false) {
b = create_B_obj();
flag = true;
}
}
private:
B create_B_obj() {
// some expensive ops
//...
}
private:
bool flag = false;
B b;
int v;
};
但存在的問題是,B可以不包含默認構造函數(B()
)所以在這種情況下我該如何做'懶結構'?
順便說一句:我的項目中的類B就像一個套接字,它需要做連接或做類似綁定的調用,所以我想把這些昂貴的操作放在懶惰中。
放置新的很好的解決方案! – Geoffroy