C ++函数返回指向动态分配对象的指针

时间:2015-04-02 03:02:14

标签: c++

我有两个A级和B级。

class B
{
};

class A
{
   public:
        B* CreateB( void )
        {
            B* obj = new B();
            return obj;
        }
}

当客户端调用A :: CreateB()时,它必须删除返回的B *指针,即使它不知道底层实现。有什么方法可以避免这种情况吗?任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

首先,您应该使用Constructor和Destructor,代码如下: 但是,不推荐这种方法!你应该阅读这本书 - effective c++

class B
{
};

class A
{
public:
    A()
    {
        obj = new B();
    }

    ~A()
    {
        if (obj)
        {
            delete obj;
        }
    }
   B* obj;
};

第二,你应该使用智能指针,代码如下:

class B
{
};

class A
{
public:
    std::shared_ptr<B> CrteateB( void )
    {
        std::shared_ptr<B> obj(new B);
        return obj;
    }
};