有一個類:C++如何分配對象,而不調用構造函數
class C {
public:
C(): _a(a++){}
private:
static int a;
int _a;
};
int C::a = 0;
C c = C(); // c._a is 0
C d = C(); // d._a is 1
C e = C(); // e._a is 2
這工作了,我會期望:和obj._a增量1。但是,如果我給你C,d,和E要一個unordered_map,他們增加了2:
unordered_map<int, C> map;
C c = C(); // c._a is 0
map[0] = c;
C d = C(); // d._a is 2
map[1] = d;
C e = C(); // e._a is 4
map[2] = e;
我如何分配C,d和e映射,仍然由1使靜態INT一個增量?
是的,這是要走的路。即使'insert'也可以工作,因爲'C'的複製/移動控制器不會修改'a'。 – Angew
。使用emplace_back而不是push_back,使用emplace而不是copy – Yves