gpt4 book ai didi

c++ - 为什么被破坏的对象比创建的多

转载 作者:行者123 更新时间:2023-11-27 23:47:53 25 4
gpt4 key购买 nike

<分区>

我是 C++ 的新手,并且试图了解复制值或传递引用的成本,在我的示例中,我发现虽然有一段代码对我来说很难理解:

考虑这个例子:

struct Foo {

Foo(int x) :
internVal { x } {
std::cout << "Con: " << std::endl;
}
~Foo() {
std::cout << "Des: " << std::endl;
}
int getVal() const {
return internVal;
}
private:
int internVal { 0 };
};

现在当我这样做的时候:

int main(int argc, char **argv) {

{
Foo a { 111 };
Foo b { 6555 };
Foo c { -444 };
std::cout << " Foos created..." << std::endl;
std::vector<Foo> vector_Test { };
vector_Test.push_back(a);
vector_Test.push_back(b);
vector_Test.push_back(c);
std::cout << " Foos added..." << std::endl;

for (const auto& d : vector_Test) {
std::cout << "-----" << d.getVal() << "-----" << std::endl;
}
std::cout << " Foos printed..." << std::endl;
}
std::cout << " Foos out of scope..." << std::endl;
std::cout << "end!" << std::endl;

//
return 0;
}

我看到以下输出:

Con: 
Con:
Con:
Foos created...
Des:
Des:
Des:
Foos added...
-----111-----
-----6555-----
------444-----
Foos printed...
Des:
Des:
Des:
Des:
Des:
Des:
Foos out of scope...
end!

所以我的问题是为什么更多的对象在创建时被销毁?

我希望是偶数...如果我直接/间接创建 3 个对象然后销毁 3 个对象

我是否有内存泄漏的地方?

谢谢

ps:我的编译器是MinWG

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com