【发布时间】:2012-01-22 16:11:46
【问题描述】:
在 C++ 中,不允许在没有显式转换的情况下将 void* 指针分配给任何整数指针。这需要使用 static_cast。
但这是怎么回事:
int* iptr = new int;
我知道 new 运算符的定义如下:
void* operator new(size_t);
C++ 如何处理这个问题? 我知道这是一个基本问题,但很重要。我也知道低级代码必须使用void。但是这个分配怎么可能是合法的呢? iptr 是一个指向 int 的指针,new 返回一个指向 void 的指针,这应该会触发类似“错误:从‘void*’到‘int*’的无效转换 [-fpermissive]”这样的消息。
【问题讨论】:
-
请阅读:stackoverflow.com/questions/2697892/…; operator new 和 new 表达式不是一回事。
-
另外,这个:stackoverflow.com/questions/2941888/… - 我相信这两个都能回答你的问题。
-
另外:谢谢你,Mat!
标签: c++