gpt4 book ai didi

c++ - C++ 是否深度初始化类成员?

转载 作者:太空狗 更新时间:2023-10-29 23:31:56 25 4
gpt4 key购买 nike

我有一个包含以下成员的 C++ 类:

map< someEnum, vector<SomeObject*>* > someMap

所以我有一张 map ,它为我拥有的每个枚举提供了一个对象 vector 。对于我的生活,我无法理解 C++ 是如何初始化这些对象的。默认情况下是否深度初始化它们?如果没有,我需要做什么?

无论我如何尝试执行此操作(并且我已经尝试了所有),我都会遇到段错误,所以我猜我在概念上遗漏了一些东西。


我应该注意到我尝试使用:

map< someEnum, vector<SomeObject*> > someMap

同样,但效果不佳。在这种情况下,C++ 是否对 vector 进行深度初始化?

最佳答案

规则是:如果 STL 容器包含指向对象的指针,它不会在堆上创建对象并将它们分配给这些指针。但是,如果它本身包含对象,它调用每个包含的对象的默认构造函数并因此初始化它们。

您在这里得到的是一个包含指针的 map (无论是哪种指针)。所以不要指望 map 让这些指针指向内存。

关于c++ - C++ 是否深度初始化类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/514824/

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