对于由其他对象组成的C++类,使这些成员对象成为指针是一种好习惯吗?

mar*_*hon 2 c++ memory-management

我问的是关于成员"mylist"的更好的做法是什么:

像这样声明mylist:

class MyClaz {
  std::list<string> mylist;
  ...
}
Run Code Online (Sandbox Code Playgroud)

或者像这样声明:

class MyClaz {
  std::list<string> *mylst;
  MyClaz();
  ...
}

MyClaz::MyClaz() {
  myList = new std::list<string>();
}
// plus destructor to delete myList
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,当创建MyClaz实例时,是否会自动分配mylist?当MyClaz被销毁时,它会被正确清理吗?

是否有理由使用第二种情况?这似乎更危险.

Dav*_*eas 10

仅在需要时谨慎使用指针.没有指针有许多优点,包括不必手动管理对象的生命周期和数据位置.问题应该是是否有任何理由使用第二种情况......