Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C/C+;中的结构的“new”和“new()”有什么区别+;?_C++_C_Struct_Language Features_New Operator - Fatal编程技术网

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:实际上,所有原始行都不应编译。我真傻。