有一个类: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