使用智能指针作为类成员可自动管理对象生命周期,避免内存泄漏;NetworkService用unique_ptr独占Logger,ImageProcessor用shared_ptr共享缓存,配合weak_ptr防循环引用,优先用make_unique/make_shared创建,提升代码安全与可维护性。

在C++中,智能指针是管理动态内存的有效工具,尤其在类成员变量中使用时,能显著提升代码的安全性和可维护性。将智能指针作为类的成员,可以自动管理所指向对象的生命周期,避免内存泄漏、重复释放等问题。
当一个类需要持有另一个对象的所有权时,使用智能指针作为成员是最自然的选择。例如:
示例:
#include <memory>
#include <string>
<p>class Logger {
public:
void log(const std::string& msg) { /<em> ... </em>/ }
};</p><p>class NetworkService {
private:
std::unique_ptr<Logger> logger;
public:
NetworkService() : logger(std::make_unique<Logger>()) {}</p><pre class='brush:php;toolbar:false;'>void doWork() {
logger->log("Processing request");
}};
立即学习“C++免费学习笔记(深入)”;
这里
NetworkService
Logger
根据所有权语义选择不同的智能指针:
std::unique_ptr
std::shared_ptr
std::weak_ptr
示例:共享资源
class ImageProcessor {
private:
std::shared_ptr<ImageCache> cache;
public:
ImageProcessor(std::shared_ptr<ImageCache> c) : cache(c) {}
// 多个处理器共享同一缓存
};
在类中使用智能指针成员时,注意以下几点:
std::make_unique
std::make_shared
shared_ptr
weak_ptr
shared_ptr
unique_ptr
基本上就这些。合理使用智能指针作为类成员,能让资源管理更清晰,减少出错可能,是现代C++编程的重要实践。
以上就是C++智能指针在类成员中的应用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号