分配C++类成员数据的首选方法是什么?

Rob*_*oke 3 c++ memory-management

假设我有一个分配一些任意成员数据的类.我见过两种常见的方法(我知道还有其他方法):

class A
{
    public:
        A();
        ~A();

        //Accessors...
    private:
        B *mB;
}

A::A()
{
    mB = new B();
}

A::~A()
{
    delete B;
}
Run Code Online (Sandbox Code Playgroud)

与...

class A
{
    public:
        //Accessors...
    private:
        B mB;
}
Run Code Online (Sandbox Code Playgroud)

假设A本身将由消费者代码在堆上分配.

在一般情况下,哪种方法更受欢迎?我意识到特定的情况确实鼓励这种或那种方式,但如果没有这些要求,是一种优先选择的方式吗?有什么权衡?

Jar*_*Par 9

第二种是首选路线.除非您特别需要变量在堆上或者其生命周期长于容器,否则不要使用new/delete.C++值类型更容易管理,并且有更少的错误案例可以担心恕我直言