对于类构造函数中的内存分配,使用初始化程序列表来简化表达式是否安全?

问题描述:

这样做的正确语法是什么?我在练习这种技术时应该注意什么。对于类构造函数中的内存分配,使用初始化程序列表来简化表达式是否安全?

+3

后一些代码,说明你是问什么。 –

+0

你可以安全地做到这一点是的。 – user0042

+0

在这个问题上没有太多的努力... – Phil1970

...正确的语法来做到这一点?

class Foo { 
    Bar* bar_; 
public: 
    Foo() : bar_(new Bar()) {} 
}; 

和实践这种技术时,我应该注意些什么。

您应该确保调用delete适当

 ~Foo() { delete bar_; } 

更好的方法,虽然是使用智能指针:

class Foo { 
    std::unique_ptr<Bar> bar_; 
public: 
    Foo() : bar_(std::make_unique<Bar>()) {} 
}; 
+0

我试图使用动态内存来修改我的练习示例,但我迷路了,因为我不太确定正确的语法。当我试图将它与继承结合起来时,它变得更加混乱。 –