deleting dynamically allocated object that contains vector in C++ STL

前端 未结 4 649
闹比i
闹比i 2021-01-23 22:12

I have a class

class ChartLine{

protected:
        vector line; // points connecting the line
        CString name; //line name for legend                 


        
4条回答
  •  天命终不由人
    2021-01-23 22:22

    The implicitly created destructor will call the destructor of all the members (in the reverse order they are declared in the class.) The vector will clean up after itself. You don't need to define a destructor yourself.

    This is why you should prefer automatic allocation in combination with RAII. When objects clean themselves, your code as safer and easier. Hint: Don't use new and delete, put it in a smart pointer!

    std::auto_ptr p(new int(5));
    boost::shared_ptr p = boost::make_shared(5);
    

    Both of those will delete automatically, and now you're exception safe as well. (Note, the two above do not do the same thing. There are more types of smart pointers as well.)

提交回复
热议问题