什么是c ++中的返回类型?

时间:2010-04-23 10:48:32

标签: c++

在C中,malloc()返回void*。但是在C ++中,new会返回什么?

double d = new int;

2 个答案:

答案 0 :(得分:35)

你必须要区分两件事。一个是 新表达式 。它是表达式new T,其结果是T*。它做了两件事:首先,它调用 new运算符分配内存,然后调用T的构造函数(如果构造函数中止)除了例外,它还会调用删除操作符。)

上述 新运营商 有多种口味。最突出的是这一个:

void* operator new(std::size_t);

您可以明确地调用它,但这种情况很少发生。

还有其他形式的 new运算符,例如对于数组

void* operator new[](std::size_t);

或所谓的展示位置新(这真的是假新的,因为它没有分配):

void* operator new(void*, std::size_t);

答案 1 :(得分:12)

new Type[x]new Type返回的值类型为Type *。您的示例double d = new int包含两个错误:

  • 您需要将结果分配给指针,如下所示:double *d = new int
  • 指针需要是指向Type的指针,或者指向Type的指针可以使用隐式转换转换为:int *d = new intvoid *d = new int