赞
踩
- #include <iostream>
- #include <memory> // 用于std::shared_ptr和std::make_shared
-
- class SocketCanClient {
- public:
- SocketCanClient() {
- std::cout << "SocketCanClient created\n";
- }
-
- ~SocketCanClient() {
- std::cout << "SocketCanClient destroyed\n";
- }
-
- void doSomething() {
- std::cout << "SocketCanClient is doing something\n";
- }
-
- // 假设这里还有其他与CAN通信相关的方法和成员变量
- };

然后,在程序的某个部分,我们使用std::make_shared
来创建SocketCanClient
的实例:
- int main() {
- // 使用std::make_shared创建SocketCanClient的共享指针
- std::shared_ptr<SocketCanClient> canBusClient = std::make_shared<SocketCanClient>();
-
- // 使用共享指针调用SocketCanClient的方法
- canBusClient->doSomething();
-
- // 当canBusClient离开作用域或被重置时,SocketCanClient对象将被自动删除
- // 在这个例子中,当main函数结束时,对象将被销毁
-
- return 0;
- }
在这个例子中,当main
函数开始执行时,canBusClient
变量通过std::make_shared
被初始化为指向新创建的SocketCanClient
对象的共享指针。随后,我们通过canBusClient
调用了doSomething
方法。当main
函数结束时,由于canBusClient
是一个局部变量,它将被销毁。由于canBusClient
是一个std::shared_ptr
,它将自动删除它所指向的SocketCanClient
对象,从而避免了手动管理内存的需要。
输出将类似于:
- SocketCanClient created
- SocketCanClient is doing something
- SocketCanClient destroyed
这展示了如何使用std::make_shared
和std::shared_ptr
来管理动态分配的对象的生命周期,并自动处理其内存释放。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。