zoukankan      html  css  js  c++  java
  • 智能指针.Qt测试

    1、Qt598x64vs2017(或 Qt598x86vs2015[配置使用vs2017])、Win10x64

    2、测试代码:

     2.1、MainWindow.h

    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private:
        int Fidx;
        QVector<std::shared_ptr<SmartPtr>> Fvtr;
        //QVector<std::unique_ptr<SmartPtr>> Fvtr;
    
    private slots:
        void on_pbtnSmartPtrAdd_clicked();
        void on_pbtnSmartPtrDel_clicked();
    };
    
    class SmartPtr
    {
    public:
        SmartPtr(int i):Fi(i){ qDebug()<< "SmartPtr(...) :" << Fi; }
        ~SmartPtr(){ qDebug()<< "~SmartPtr(...) :" << Fi;  }
    
    private:
        int Fi;
    };

     2.2、MainWindow.cpp

    void MainWindow::on_pbtnSmartPtrAdd_clicked()
    {
        Fidx ++;
        std::shared_ptr<SmartPtr> ptr = std::make_shared<SmartPtr>(Fidx);
        //std::unique_ptr<SmartPtr> ptr = std::make_unique<SmartPtr>(Fidx);
        Fvtr.append(ptr);
    }
    
    void MainWindow::on_pbtnSmartPtrDel_clicked()
    {
        if (Fvtr.count() > 0)
        {
            std::shared_ptr<SmartPtr> ptr = Fvtr.at(0);
            //std::unique_ptr<SmartPtr> ptr = Fvtr.at(0);
            Fvtr.removeAt(0);
            qDebug() << "after QVector<std::shared_ptr<SmartPtr>>::removeAt(0)";
        }
    }

     2.3、控制台输出:

      ZC:前3条是 点击"pbtnSmartPtrAdd"打印出来的信息,后6条是 点击"pbtnSmartPtrDel"打印出来的信息

      ZC:Fvtr.removeAt(0); 后没有 立即析构SmartPtr,是在函数结束时才析构SmartPtr的 

    SmartPtr(...) : 2
    SmartPtr(...) : 3
    SmartPtr(...) : 4
    after QVector<std::shared_ptr<SmartPtr>>::removeAt(0)
    ~SmartPtr(...) : 2
    after QVector<std::shared_ptr<SmartPtr>>::removeAt(0)
    ~SmartPtr(...) : 3
    after QVector<std::shared_ptr<SmartPtr>>::removeAt(0)
    ~SmartPtr(...) : 4

    3、可以看到,我代码上 有注释掉 std::unique_ptr的使用(我这里的使用 是和std::shared_ptr一样的),改成 std::unique_ptr 那样的话 编译会报错:

     

     

    4、

    5、

  • 相关阅读:
    简单伪类
    购物网页css
    「WC2020T2」猜数
    ARC 103
    Codeforces 1198F
    ZJOI2019二试游记
    ZJOI2019一试游记
    「WC2015」未来程序
    「CodeForces Round #545 Div2」划水记
    「CF1116」Microsoft Q# Coding Contest
  • 原文地址:https://www.cnblogs.com/cppskill/p/11897513.html
Copyright © 2011-2022 走看看