gpt4 book ai didi

c++ - 在struct和main中分配内存的区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:15:21 24 4
gpt4 key购买 nike

我有两个像这样的简单结构:

struct Point{
double x, y;
};

这样定义有什么区别

struct Circle{
Point *P;
float radius;
};

还有这个

struct Circle{
Point *P = new Point;
float radius;
};

如果我使用第一个示例并在 main 函数中做这样的事情有什么好处吗

Circle *C = new Circle;
C -> P = new Point;

最佳答案

这个:

struct Circle{
Point *P = new Point;
float radius;
};

使用 C++11 类内初始化。这意味着默认情况下,如果没有其他构造函数否则(您的示例中没有),P 将被设置为 new Point 对于任何构造的 圆圈。这与您在创建 Circle 后显式设置 P 的示例等效,但代码行更少。

当然,对于您提供的示例代码,最好只使用值而不是指针:

struct Circle{
Point P;
float radius;
};

这样一来,Circle 中总会有一个Point,我们就不必就资源管理、内存泄漏等问题进行长时间的尴尬对话了。

关于c++ - 在struct和main中分配内存的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26355210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com