当前位置:   article > 正文

智能指针和std::make_shared函数,c++,linux

智能指针和std::make_shared函数,c++,linux
  1. #include <iostream>
  2. #include <memory> // 用于std::shared_ptr和std::make_shared
  3. class SocketCanClient {
  4. public:
  5. SocketCanClient() {
  6. std::cout << "SocketCanClient created\n";
  7. }
  8. ~SocketCanClient() {
  9. std::cout << "SocketCanClient destroyed\n";
  10. }
  11. void doSomething() {
  12. std::cout << "SocketCanClient is doing something\n";
  13. }
  14. // 假设这里还有其他与CAN通信相关的方法和成员变量
  15. };

然后,在程序的某个部分,我们使用std::make_shared来创建SocketCanClient的实例:

  1. int main() {
  2. // 使用std::make_shared创建SocketCanClient的共享指针
  3. std::shared_ptr<SocketCanClient> canBusClient = std::make_shared<SocketCanClient>();
  4. // 使用共享指针调用SocketCanClient的方法
  5. canBusClient->doSomething();
  6. // 当canBusClient离开作用域或被重置时,SocketCanClient对象将被自动删除
  7. // 在这个例子中,当main函数结束时,对象将被销毁
  8. return 0;
  9. }

在这个例子中,当main函数开始执行时,canBusClient变量通过std::make_shared初始化为指向新创建的SocketCanClient对象的共享指针。随后,我们通过canBusClient调用了doSomething方法。当main函数结束时,由于canBusClient是一个局部变量,它将被销毁。由于canBusClient是一个std::shared_ptr,它将自动删除它所指向的SocketCanClient对象,从而避免了手动管理内存的需要。

输出将类似于:

  1. SocketCanClient created
  2. SocketCanClient is doing something
  3. SocketCanClient destroyed

这展示了如何使用std::make_sharedstd::shared_ptr来管理动态分配的对象的生命周期,并自动处理其内存释放。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/218245
推荐阅读
相关标签
  

闽ICP备14008679号