c++ 通过一个临时的空的智能指针(裸指针),交换两个智能指针(裸指针)的值,注意是交换值!!!!

复制代码
#include <iostream>
#include <memory>
using namespace std;

struct ParenTask // 父亲
{
    string name{};
};
typedef shared_ptr<ParenTask> ParenTaskPtr;

struct SubTask : ParenTask  // 孩子
{
    int uid{};
};
typedef shared_ptr<SubTask> SubTaskPtr;


int main()
{
    SubTaskPtr sub0;
    cout << "Hello World!" << endl;
    SubTaskPtr sub1 = make_shared<SubTask>();
    sub1->uid = 1;
    sub1->name = "HuiJtao";

    SubTaskPtr sub2 = make_shared<SubTask>();
    sub0 = sub2;
    std::swap(*(sub0.get()),*(sub1.get())); // 智能指针(交换方式)
    auto uid =  sub2->uid;
    auto name =  sub2->name;

    int *c;
    int *a = new int(10);
    int *b = new int(2);
    c = a;

    std::swap(*c,*b); // 裸指针(交换方式)
    auto aa = a;
    auto bb = b;
    return 0;
}
复制代码

 

posted @   雾枫  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
历史上的今天:
2023-02-22 QT——label显示图片
点击右上角即可分享
微信分享提示