C++ C/C+;中的结构的“new”和“new()”有什么区别+;?
可能重复:C++ C/C+;中的结构的“new”和“new()”有什么区别+;?,c++,c,struct,language-features,new-operator,C++,C,Struct,Language Features,New Operator,可能重复: 在一些代码中,我最近看到了如下结构: typedef struct MyStruct { int numberOne; int numberTwo; } MYSTRUCT; 后来,我尝试使用 MyStruct *pStruct = new MyStruct(); 它在VisualStudio2010中运行良好,但在另一个编译器上由于一个模糊的链接器错误而失败。过了一段时间,我们才发现省略了像这样的括号 MyStruct *pStruct = new MyStru
在一些代码中,我最近看到了如下结构:
typedef struct MyStruct {
int numberOne;
int numberTwo;
} MYSTRUCT;
后来,我尝试使用
MyStruct *pStruct = new MyStruct();
它在VisualStudio2010中运行良好,但在另一个编译器上由于一个模糊的链接器错误而失败。过了一段时间,我们才发现省略了像这样的括号
MyStruct *pStruct = new MyStruct;
解决了这个问题
那么,这两个调用之间到底有什么区别,哪一个是正确的调用呢?
newmystruct
执行默认初始化,而在您的情况下,默认初始化不起任何作用
new MyStruct()
执行值初始化,在您的情况下,这会将两个int变量都设置为零。我认为您有一个冗余的typedef(或者typedef缺少名称),而且new
返回一个指针而不是一个对象。typedef struct MyStruct{int numberOne;int numberTwo;};是一个error@Armen:实际上,所有原始行都不应编译。我真傻。