2010-12-02 75 views
2

可能重复:
Do the parentheses after the type name make a difference with new?C/C++中`new`和`new()`结构有什么区别?

在一些代码,我最近看到一个像这样的结构:

typedef struct MyStruct { 
    int numberOne; 
    int numberTwo; 
} MYSTRUCT; 

后来,我尝试实例化使用

这些结构的一个
MyStruct *pStruct = new MyStruct(); 

与Visual Studio 2010一起工作良好,但在另一个编译器上出现模糊的链接器错误。花了一段时间,直到我们发现省略了这样的大括号

MyStruct *pStruct = new MyStruct; 

解决了这个问题。

那么,这两个调用之间的区别究竟是什么,哪一个是正确的?

+0

我认为你有一个多余的typedef(或typedef缺少的名称),`new`返回一个指针而不是一个对象。 – 2010-12-02 11:46:24

回答

1

new MyStruct执行默认初始化,这在你的情况下什么都不做。

new MyStruct()执行值初始化,它在你的情况下将两个int变量设置为零。

相关问题