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

C++ Function Returning Pointer to Dynamically Allocated Object

本文关键字:对象 指针 动态分配 函数 返回 C++      更新时间:2023-10-16

我有两个A级和B级。

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

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

首先,您应该使用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;
    }
};