我有一個類返回類對象的指針
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 **部分嗎? –