我有两个A级和B级。
class B
{
};
class A
{
public:
B* CreateB( void )
{
B* obj = new B();
return obj;
}
}
当客户端调用A :: CreateB()时,它必须删除返回的B *指针,即使它不知道底层实现。有什么方法可以避免这种情况吗?任何建议都表示赞赏。
答案 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;
}
};