让我们说我的对象叫做THING,它有一个指向另一个THING的指针。我希望能够将我的对象中的THING指针指向我指向THINGS的向量中的任何元素,但我不希望它指向一些垃圾值,所以我想知道这些元素是否存在被初始化为NULL,这将与我如何构建包含这些对象和对象指针向量的类有关。
简单地说,有没有人知道指针向量中的元素被初始化为什么?
编辑:为了澄清,我正在使用标准的矢量类。
答案 0 :(得分:1)
创建矢量时,其中的所有元素都是值初始化的。因此,如果你有一个指针向量,除非你改变了值,否则它们都将指向NULL。
答案 1 :(得分:0)
如果您有一个普通的旧式C风格数组,如Foo vfoo[10];
,则指针不会初始化为nullptr
(即未进行值初始化),但默认初始化。仅当您声明std::vector
时才如std::vector<Foo> vfoo(10);
,则其元素将进行值初始化,指针将为nullptr
。
请参阅std::vector<>
的构造函数:
explicit vector (size_type n, const T& value= T(), const Allocator& = Allocator());
此处const T& value= T()
执行值初始化。