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

时间:2017-09-02 23:45:50

标签: c++ memory constructor default-constructor

这样做的正确语法是什么?在练习这种技巧时,我应该注意什么。

1 个答案:

答案 0 :(得分:0)

  

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

 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>()) {}
 };