是的我已经搜索过,但我找不到答案。我有一个类的成员向量。这个向量在类构造函数中给出了一些值(在本例中只是1)。构造函数完成后,将调用向量中对象的析构函数。
这是我正在处理的简短而甜蜜的版本
test.h
Class test
{
private:
Vector<Sprite> sprites;
public:
test(item _something);
}
TEST.CPP
test::test(item _something);
{
sprites.emplace_back(_device, tBank["TestTexture"]);
}
的main.cpp
test testItem;
main()
{
testItem = testItem(something);
// This is where the destructor for sprite is called
}
我知道上面的代码不起作用,但它是正在发生的事情的简写。如果要求,我可以发布整件事。无论如何我在疯狂吗?
答案 0 :(得分:2)
首先,我假设您testItem(something)
实际上是test(something)
(还有其他一些明显的错误,例如,main()
需要返回int
,即,似乎这不是真正的代码。)
将使用test(something)
创建的临时文件分配给testItem
时,对象将被复制或移动分配给testItem
,然后,临时文件将被销毁。编译器没有太多选择。如果std::vector<Sprite>
类中没有复制构造函数或复制赋值,则可以移动包含的test
。由于这不是真正的代码,因此很难说。
答案 1 :(得分:0)
您的体验是预期的:
Type t;
t = Type(arg);
第二行使用给定的参数创建类型为Type
的对象,然后将其分配给t
变量。在完整表达式结束时,临时文件将被销毁。