思想:利用对象管理资源,用析构函数自动删除指针
- 避免资源泄漏
- 避免异常处理导致的代码编写困难,可执行文件变大的
class ALA {
public:
virtual void processAdoption() = 0;
};
class Puppy: public ALA {
public:
virtual void processAdoption() {
std::cout << "Puppy\n";
}
};
class Kitten: public ALA {
public:
virtual void processAdoption() {
std::cout << "Kitten\n";
}
};
ALA* readALA(std::istream& s) {
return new Puppy();
}
// void processAdoptions(std::istream& dataSource) {
// while (dataSource) {
// ALA *pa = readALA(dataSource);
// pa->processAdoption();
// delete pa;
// break;
// }
// }
// void processAdoptions(std::istream& dataSource) {
// while (dataSource) {
// ALA *pa = readALA(dataSource);
// try {
// pa->processAdoption();
// } catch(...) {
// delete pa;
// throw;
// }
// delete pa;
// break;
// }
// }
void processAdoptions(std::istream& dataSource) {
while (dataSource) {
std::unique_ptr<ALA> pa(readALA(dataSource));
pa->processAdoption();
break;
}
}
本文讨论了如何使用C++中的智能指针(如`std::unique_ptr`)和析构函数来管理资源,以防止资源泄漏,并减少异常处理带来的代码复杂性,优化可执行文件大小。

1118

被折叠的 条评论
为什么被折叠?



