相关疑难解决方法(0)

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

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

double d = new int;
Run Code Online (Sandbox Code Playgroud)

c++

10
推荐指数
2
解决办法
1万
查看次数

为什么允许new运算符返回*void到每个指针类型?

在C++中,不允许在没有显式强制转换的情况下为任何整数指针分配void*指针.这需要使用static_cast.

但这是怎么回事:

int* iptr = new int;
Run Code Online (Sandbox Code Playgroud)

我知道新的运算符定义如下:

void* operator new(size_t);
Run Code Online (Sandbox Code Playgroud)

C++如何处理这个问题?我知道这是一个基本问题,但很重要.我也知道低级代码必须使用void.但这项任务如何合法?iptr是指向int的指针,new返回指向void的指针,它应该触发"错误:从'void*'到'int*'[-fpermissive]"无效转换的消息.

c++

9
推荐指数
1
解决办法
3128
查看次数

从GNU上的new运算符调用类构造函数 - 使用无效类

我问题的最接近的线程在这里.我试图用gcc编译以下代码:

#include <malloc.h>

class A
{
public:
  A(){};  
  ~A(){};
};//class A

int main()
{
  A* obj = (A*) malloc( sizeof(A) );
  if(obj==0) return 1 ;
  obj->A::A(); /*error: invalid use of 'class A' */
  obj->A::~A();
  free(obj);
  return 0;  
};//
Run Code Online (Sandbox Code Playgroud)

从命令行我编译代码:

$ g++ -o main main.cpp  
main.cpp: In function 'int main()':  
main.cpp:22: error: invalid use of 'class A'

你能指点我正确的方向吗?

c++ gcc

3
推荐指数
2
解决办法
1051
查看次数

标签 统计

c++ ×3

gcc ×1