Env*_*nve 1 c++ pointers new-operator
我有两个这样简单的结构:
struct Point{
double x, y;
};
Run Code Online (Sandbox Code Playgroud)
这样定义有什么区别
struct Circle{
Point *P;
float radius;
};
Run Code Online (Sandbox Code Playgroud)
还有这个
struct Circle{
Point *P = new Point;
float radius;
};
Run Code Online (Sandbox Code Playgroud)
如果我使用第一个样本并在main函数中执行类似的操作,是否有任何优势
Circle *C = new Circle;
C -> P = new Point;
Run Code Online (Sandbox Code Playgroud)
这个:
struct Circle{
Point *P = new Point;
float radius;
};
Run Code Online (Sandbox Code Playgroud)
使用C++ 11类内初始化.这意味着默认情况下,如果没有其他构造函数(在您的示例中没有),P则将设置new Point为任何构造的Circle.这相当于您P创建示例后显式设置的示例的代码行数Circle.
当然,使用您提供的示例代码,您最好只使用值而不是指针:
struct Circle{
Point P;
float radius;
};
Run Code Online (Sandbox Code Playgroud)
然后总会有一个Point内部的Circle,我们不必在资源管理,内存泄漏等方面进行长时间的尴尬对话.