operator new返回void*的意义/原因是什么?我试着想出一些想法来解释为什么会有这样一个操作员版本,但是我想不出一个。
operator new
void*
gtlvzcf81#
operator new在C++中是一个标准库函数,用于在运行时动态地为对象分配内存。该函数被定义为返回指向void的指针,这意味着它可以返回指向任何类型的对象的指针。这允许operator new用于任何类型,包括用户定义类型,而无需为每个特定类型重载运算符。返回void*指针也很有用,因为它允许程序员将指针类型转换为适当的类型,从而允许相同的内存分配函数用于不同的数据类型。这在使用泛型代码时也很有用,在泛型代码中,对象的类型直到运行时才知道。另外,返回void*指针允许operator new与存储器分配库结合使用,诸如在嵌入式系统中使用的那些存储器分配库,其可能具有不同的存储器分配要求。简而言之,operator new的void*返回类型是为了实现函数的最大灵活性和可重用性。
void
1条答案
按热度按时间gtlvzcf81#
operator new
在C++中是一个标准库函数,用于在运行时动态地为对象分配内存。该函数被定义为返回指向void
的指针,这意味着它可以返回指向任何类型的对象的指针。这允许operator new
用于任何类型,包括用户定义类型,而无需为每个特定类型重载运算符。返回
void*
指针也很有用,因为它允许程序员将指针类型转换为适当的类型,从而允许相同的内存分配函数用于不同的数据类型。这在使用泛型代码时也很有用,在泛型代码中,对象的类型直到运行时才知道。另外,返回
void*
指针允许operator new
与存储器分配库结合使用,诸如在嵌入式系统中使用的那些存储器分配库,其可能具有不同的存储器分配要求。简而言之,
operator new
的void*
返回类型是为了实现函数的最大灵活性和可重用性。