为什么需要使用(&*ptr)这种格式?

问题描述 投票:0回答:1

我正在阅读有关如何编写 destroy() 的示例代码:

template<class T>
inline void destory(T* pointer)
{
    pointer->~T();
}

template <class FowardIterator>
inline void 
_desstroy_aux(ForwardIterator first,ForwardIterator last,_false_type)
{
    for(;first<last;++first)
    destory(&*first); 
}

我不太确定为什么使用

&*第一

我想销毁算法通常是在假设迭代器指向分配的内存的情况下使用的。那么我们为什么不直接使用 destory(first) 呢?也许是因为first可能指向没有单独分配的元素?

提前致谢。

c++ pointers reference
1个回答
0
投票

C++中&*ptr的使用用于获取指向迭代器所指向元素的指针。在提供的代码的上下文中, &*first 在负责销毁对象(称为 _destroy_aux)的函数中使用。

在这种情况下使用 &*ptr 的主要原因是获取指向迭代器首先指向的对象的指针。这是必要的,因为销毁函数(或销毁,取决于代码中可能的拼写错误)可能需要指向要销毁的对象的指针。

* 运算符首先获取迭代器指向的对象,然后 & 运算符获取该对象的内存地址,从而提供指向该对象本身的指针。该内存地址可能需要作为参数传递给 destroy(或 destory)函数,以执行该迭代器所指向的对象的销毁。

© www.soinside.com 2019 - 2024. All rights reserved.