c++ - 我不认为这是类型转换,但它是什么?

标签 c++ struct

这包含在一个 for 循环中:

v[i] = new (&vv[i]) vertex(pts[i],i);
  • vertex 是一个struct
  • pts 是一个point*
  • v 是一个vertex**
  • vv 是一个vertex*

(&vv[i]) 部分是做什么的?

最佳答案

看起来像是新的展示位置。它与普通的 new 语句相同,但它不是实际分配内存,而是使用括号内的表达式指向的已经可用的内存。

在你的例子中,它使用 vv[i] 中的内存来创建新的 vertex 对象,然后返回指向该对象的指针(即 &vv[i ]) 并将其分配给 v[i]

参见例如this reference了解更多详情。

关于c++ - 我不认为这是类型转换,但它是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18531593/

相关文章:

C++:string = NULL 给出 SEGFAULT 11?

c++ - 如何保证进程调用malloc()时立即分配物理内存?

C 结构的 C++ 类包装器

c - 具有未定义长度但只有一个 int 元素的数组的目的是什么?

结构初始化以满足没有显式方法定义的接口(interface)

c++ - C++中的快速多线程随机序列

c++ - 使用指向数组的指针实现无限大小的堆栈

c++ - 指向指针数组的指针导致段错误

swift - 可以通过结构扩展 Swift 字典吗?

c - 有没有办法在 C 中循环遍历具有不同类型元素的结构?