【问题标题】:C++ structs, difference between new type; and new type() [duplicate]C++结构,新类型的区别;和新类型()[重复]
【发布时间】:2020-01-01 15:03:01
【问题描述】:

例如,我在 C++ 中有一个类似的结构

typedef struct point {
    double x, y;
};

我可以使用

point *p = new point;

point *p = new point();

动态创建一个点。

有什么区别?在第二种情况下,x 和 y 被隐式初始化为零。为什么不是第一种情况?

【问题讨论】:

    标签: c++ struct initialization new-operator


    【解决方案1】:

    根据 C++ 标准(11.6 初始化程序)

    11 一个对象,其初始值设定项是一组空括号,即 (),应进行值初始化。

    表示标量类型结构的数据成员在该语句中初始化为零

    point *p = new point();
    

    在这种情况下

    point *p = new point;
    

    结构的成员是默认初始化的,即(因为类没有用户定义的构造函数,并且数据成员在类定义中没有初始化器)具有不确定的值。

    请注意,您可以通过以下方式定义结构

    typedef struct point {
        double x = 0, y = 0;
    };
    

    在这种情况下,上述两个语句的结果将是相同的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 2013-08-19
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 2016-10-13
      相关资源
      最近更新 更多