gpt4 book ai didi

c++ - C++ 指针的默认构造函数是什么?

转载 作者:IT老高 更新时间:2023-10-28 12:50:29 25 4
gpt4 key购买 nike

我有这样的代码:

class MapIndex
{
private:
typedef std::map<std::string, MapIndex*> Container;
Container mapM;

public:
void add(std::list<std::string>& values)
{
if (values.empty()) // sanity check
return;

std::string s(*(values.begin()));
values.erase(values.begin());
if (values.empty())
return;

MapIndex *&mi = mapM[s]; // <- question about this line
if (!mi)
mi = new MapIndex();
mi->add(values);
}
}

我主要关心的是,如果将新项目添加到 map 中,mapM[s] 表达式是否会返回对 NULL 指针的引用?

SGI docs这么说: data_type& operator[](const key_type& k)返回对与特定键关联的对象的引用。如果 map 还没有包含这样的对象,则 operator[] 插入默认对象 data_type()。

所以,我的问题是插入 default object data_type() 是否会创建一个 NULL 指针,还是会创建一个指向内存中某处的无效指针?

最佳答案

它会创建一个 NULL (0) 指针,无论如何这都是一个无效的指针:)

关于c++ - C++ 指针的默认构造函数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936999/

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