我有一个类返回类对象的指针
class Foo
{
public:
char* ptr;
Foo() { ptr=new char [10]; }
~Foo() { delete [] ptr; }
};
我已经了解到,返回这个类的一个对象是不可能的,因为动态分配指针是delete
“ED和在创建一个悬空指针调用函数
那么如何返回这个类的一个对象?
Foo Bar()
{
Foo obj;
return obj;
}
能把它通过将一个拷贝构造函数
Foo::Foo(const Foo& obj)
{
ptr = new char [10];
for(int i = 0 ; i < 10 ;++i)
ptr [i] = obj.ptr[i];
}
而且功能要解决的问题
Foo Bar()
{
Foo obj;
return Foo(obj); //invokes copy constructor
}
注意这些都只是实际的类我想,是不是代表根据推荐标准创建(即请不要告诉我使用std::string
或std::vector
)。
@PaulMcKenzie它没有解释怎么做才能克服它。 – WARhead
该链接显示您需要复制构造函数,赋值运算符和析构函数。 – PaulMcKenzie
@Warhead,你看过第一个答案中的** Managing Resources **部分吗? –