结构中的"new/delete"代替"malloc/free"在C++中有多好?

par*_*ish 0 c++ struct class

很多次,我在C++代码指针中看到了结构的分配;

struct Current{
int amp;
};

Current *cur = new Current();
Run Code Online (Sandbox Code Playgroud)

但是,"Current"是一个结构而不是类,但在C++中受支持.如何使用它来代替C类型分配,如下所示:

Current *cur = (Current*) malloc (sizeof(Current));
Run Code Online (Sandbox Code Playgroud)

这背后的基本概念是什么?我所知道的是,"结构"在C++中被认为是"类".

已知C++中struct-VS-class的概念.查询主要是关于具体的用例,因为两者都是允许的,但是应该优先考虑,为什么?

swa*_*log 5

在C++中,a struct与a相同class,除了它具有默认public成员以及默认public继承.

至于使用malloc它,虽然可以使用它,但就像你说的a C-type分配一样,不应该用它C++.如果必须,您将对malloc/free结构使用与对类相同的方式.

但是,正确的C++方法是使用newdelete,对于a也使用相同struct的方法class.


如果你很好奇为什么 new/delete要用它而不是 malloc/free,我推荐你这个Q/A:在什么情况下我使用malloc vs new?


至于括号的使用,即:

Current *cur = new Current();
//vs.
Current *cur = new Current;
Run Code Online (Sandbox Code Playgroud)

请参阅:类型名称后的括号是否与new有所不同?

我只是做了自己,并学到了新的东西.

  • 在这种情况下,括号实际上有所不同. (3认同)