首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类类型的new与new()

类类型的new与new()
EN

Stack Overflow用户
提问于 2021-07-03 03:21:31
回答 1查看 47关注 0票数 0

给定一个普通的旧数据结构

代码语言:javascript
运行
复制
struct Point
{
    int x;
    int y;
};

我能做到

代码语言:javascript
运行
复制
Point * p1 = new Point;   // members x, y uninitialised
Point * p2 = new Point(); // member x, y are 0

现在假设我有

代码语言:javascript
运行
复制
class PointAdv
{
    std::string sPrefix;
    int x;
    int y;
    std::string sPostfix;
};

我就是这么做的

代码语言:javascript
运行
复制
Point * p1Adv = new PointAdv;
Point * p2Adv = new PointAdv();

我可以保证第二个表达式中的类,在任何ISO C++标准下x和y都是0吗?谢谢

对新的array new的PODs和类也做类似的保证。

其他StackOverflow问题与此类似,但它们不清楚当类是类类型和内置类型的混合时会发生什么。我想知道在使用new type()时,尽管存在类类型的成员,内建类型是否被初始化为零;

EN

回答 1

Stack Overflow用户

发布于 2021-07-03 03:26:46

是的,它们将是零初始化的。

POD-ness不会影响这一点。这是因为您的类有一个隐式生成的默认构造函数(在类体中显式=defaulted的构造函数也可以做到这一点)。

此效果通过满足此条件的类递归传播(因此,如果您有任何具有满足此要求的默认构造函数的类类型的成员,则它们也将被置零),并通过数组传播。

详情请参见cppreference

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68230356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档