Nếu trình biên dịch của bạn hỗ trợ C++ 11 bạn có thể sử dụng unique_ptr đây:
#include <iostream>
#include <memory>
using namespace std;
class Cat {
public:
Cat() {
cout << "Cat created" << endl;
}
~Cat() {
cout << "Cat destroyed" << endl;
}
void eatFood() {
cout << "Cat is eating food" << endl;
}
};
unique_ptr<Cat> makeCat() {
unique_ptr<Cat> lady(new Cat);
return lady;
}
int main() {
unique_ptr<Cat> molly = makeCat();
molly->eatFood();
return 0;
}
Bây giờ, bạn không cần phải lo lắng về việc xóa đối tượng được tạo ra. Nó sẽ bị xóa ngay sau khi con trỏ molly nằm ngoài phạm vi:
Cat created
Cat is eating food
Cat destroyed
Ví dụ này thiếu kiểu trả về cho makeCat(). – pascal
Và nó có nhiều lỗi hơn. Nếu bạn muốn biết về một lỗi biên dịch thời gian, bạn nên đăng ít nhất là mã compilable. – sbi
Kevin: đọc về STL auto_ptr và tăng shared_ptr. –