使用空初始化列表初始化的容器中的指针总是 == nullptr 还是有一些陷阱?当我想检查没有任何内容写入给定单元格时(在所有三种情况下),我可以在我的代码中依赖它吗?
class Foo;
Foo* arr1[100]{};
std::shared_ptr<Foo> arr2[100]{};
std::vector<std::shared_ptr<Foo>> vec{100};
if (arr1[50] == nullptr){
...
}
if (arr2[50] == nullptr){
...
}
if (vec[50] == nullptr){
...
}
在上面的代码中,初始化列表没有初始化任何内容。在第一种情况下,执行聚合初始化,用零填充。否则,100 个元素中的每一个都将使用默认构造函数进行初始化。在这种情况下,确实会到处都有nullptr。