C++ 将转换运算符放在迭代器中以将其转换为指针是一个好主意吗?

C++ 将转换运算符放在迭代器中以将其转换为指针是一个好主意吗?,c++,C++,我今天看到了以下代码: options.push_back(&*i); 其中,i是一个迭代器,容器options存储指向*i类型的指针。由此产生的&*i有点难看,我开始怀疑: 添加一个转换运算符以转换为*i指针是一个好主意吗 你认为呢?这并不难看,但可能很危险:如果迭代器i的源是动态分配的,并且在容器选项之前被删除,这将导致容器中的指针无效。 如果不是,这是完全有效的代码。为了使其更具可读性,可以添加大括号: options.push_back(&(*i)); 如果代码中没有

我今天看到了以下代码:

options.push_back(&*i);
其中,
i
是一个迭代器,容器
options
存储指向
*i
类型的指针。由此产生的
&*i
有点难看,我开始怀疑:

添加一个转换运算符以转换为
*i
指针是一个好主意吗


你认为呢?

这并不难看,但可能很危险:如果迭代器
i
的源是动态分配的,并且在容器
选项
之前被删除,这将导致容器中的指针无效。
如果不是,这是完全有效的代码。为了使其更具可读性,可以添加大括号:

options.push_back(&(*i));

如果代码中没有使用这种结构,我不会在这里使用转换运算符。

我会避免使用它;隐式转换通常是重载解析中令人头疼的问题,另外,当目标是指针时,它们会默默地启用对对象可能毫无意义的内容(如
if(i)
)<代码>&*毕竟没那么糟糕…@matteo italia:我想了很多,然后。。。我同意你的看法。这是个坏主意。