cpp: Visitor Pattern

news2024/11/30 10:48:03
/*****************************************************************//**
 * \file   Gold.h
 * \brief 访问者模式  Visitor Pattern  C++ 14 行为模式
 *  2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#pragma once
#ifndef GOLD_H
#define GOLD_H
 
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
 
 
 
using namespace std;
 
 
 
namespace DuJewelryVisitorPattern
{
 
    class GoldVisitor;
    /// <summary>
    /// 黄金
    /// </summary>
    class Gold
    {
 
    public:
 
        /// <summary>
        /// 这里的形参是访问者父类指针
        /// </summary>
        /// <param name="pvisitor"></param>
        virtual void Accept(GoldVisitor* pvisitor) = 0;
 
    public:
        /// <summary>
        /// 名称
        /// </summary>
        /// <returns></returns>
        virtual string getName() = 0; 
 
        /// <summary>
        /// 总价格,单位:元
        /// </summary>
        /// <returns></returns>
        virtual float getPrice() = 0;   
 
    };
 
}
 
#endif
 
 
/*****************************************************************//**
 * \file   GoldGenius.h
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#pragma once
#ifndef GOLDGENIUS_H
#define GOLDGENIUS_H
 
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
 
#include "Gold.h"
#include "GoldVisitor.h"
 
 
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
     
 
    /// <summary>
    /// 天赋
    /// </summary>
    class GoldGenius:public Gold
    {
    public:
 
        /// <summary>
        /// 名称
        /// </summary>
        /// <returns></returns>
        virtual string getName()
        {
            return "天赋";
        }
 
        /// <summary>
        /// 价格
        /// </summary>
        /// <returns></returns>
        virtual float getPrice()
        {
            return 46.8f;  
        }
 
    public:
 
        /// <summary>
        ///
        /// </summary>
        /// <param name="pvisitor"></param>
        void Accept(GoldVisitor* pvisitor);
     
 
 
    };
}
#endif
 
 
/*****************************************************************//**
 * \file   GoldGentle.h
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#pragma once
#ifndef GOLDGENGLE_H
#define GOLDGENGLE_H
 
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
 
#include "Gold.h"
#include "GoldVisitor.h"
 
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
    /// <summary>
    /// 高尚
    /// </summary>
    class GoldGentle :public Gold
    {
 
    public:
 
        /// <summary>
        /// 名称
        /// </summary>
        /// <returns></returns>
        virtual string getName()
        {
            return "高尚";
        }
 
        /// <summary>
        /// 价格
        /// </summary>
        /// <returns></returns>
        virtual float getPrice()
        {
            return 111.3f;   
        }
 
    public:
 
        /// <summary>
        ///
        /// </summary>
        /// <param name="pvisitor"></param>
        void Accept(GoldVisitor* pvisitor);
 
 
    };
 
}
 
#endif
 
/*****************************************************************//**
 * \file   GoldGlorious.h
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#pragma once
#ifndef GOLDGLORIOUS_H
#define GOLDGLORIOUS_H
 
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
 
#include "Gold.h"
#include "GoldVisitor.h"
 
 
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
    /// <summary>
    /// 璀璨
    /// </summary>
    class GoldGlorious :public Gold
    {
    public:
 
        /// <summary>
        /// 名称
        /// </summary>
        /// <returns></returns>
        virtual string getName()
        {
            return "璀璨";
        }
 
        /// <summary>
        /// 价格
        /// </summary>
        /// <returns></returns>
        virtual float getPrice()
        {
            return 122.0f;    //
        }
 
    public:
 
        /// <summary>
        /// virtual
        /// </summary>
        /// <param name="pvisitor"></param>
         void Accept(GoldVisitor* pvisitor) ; //
 
 
    };
}
#endif
 
/*****************************************************************//**
 * \file   GoldGenius.cpp
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#include "GoldGenius.h"
 
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
    /// <summary>
    ///
    /// </summary>
    /// <param name="pvisitor"></param>
    void GoldGenius::Accept(GoldVisitor* pvisitor)
    {
        pvisitor->VisitElmGenius(this);
    }
}
 
/*****************************************************************//**
 * \file   GoldGentle.cpp
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#include "GoldGentle.h"
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
 
    /// <summary>
    ///
    /// </summary>
    /// <param name="pvisitor"></param>
    void GoldGentle::Accept(GoldVisitor* pvisitor)
    {
        pvisitor->VisitElmGentle(this);
         
    }
}
 
/*****************************************************************//**
 * \file   GoldGlorious.cpp
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#include "GoldGlorious.h"
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
    /// <summary>
    ///
    /// </summary>
    /// <param name="pvisitor"></param>
    void GoldGlorious::Accept(GoldVisitor* pvisitor)
    {
        pvisitor->VisitElmGlorious(this);
    }
 
}
 
/*****************************************************************//**
 * \file   GoldVisitor.h
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#pragma once
#ifndef GOLDVISITOR_H
#define GOLDVISITOR_H
 
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
 
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"
 
using namespace std;
 
 
 
namespace DuJewelryVisitorPattern
{
 
    class GoldGenius;
    class GoldGentle;
    class GoldGlorious;
 
 
    /// <summary>
    ///
    /// </summary>
    class GoldVisitor
    {
 
    public:
        /// <summary>
        /// 做父类时析构函数应该为虚函数
        /// </summary>
        virtual ~GoldVisitor() {}
        /// <summary>
        /// 访问元素: virtual  = 0
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGenius(GoldGenius* pelem)=0 ;
        /// <summary>
        /// 访问元素:
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGentle(GoldGentle* pelem)=0;
        /// <summary>
        /// 访问元素:
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGlorious(GoldGlorious* pelem)=0;
 
        以下几个接口的名字都叫Visit(成员函数重载)
        //virtual void Visit(GoldGenius* pelem) = 0;   //访问元素:
        //virtual void Visit(GoldGentle* pelem) = 0;  //访问元素:
        //virtual void Visit(GoldGlorious* pelem) = 0;       //访问元素:
    };
 
}
 
#endif
 
/*****************************************************************//**
 * \file   ObjectStructure.h
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#pragma once
#ifndef OBJECTSTRUCTURE_H
#define OBJECTSTRUCTURE_H
 
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
 
#include "Gold.h"
#include "GoldVisitor.h"
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"
 
 
 
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
     
    /// <summary>
    /// 对象结构
    /// </summary>
    class ObjectStructure
    {
 
    public:
        /// <summary>
        /// 增加黄金到黄金列表中
        /// </summary>
        /// <param name="p_mdc"></param>
        void addGold(Gold* p_mdc)
        {
            goldlist.push_back(p_mdc);
        }
        /// <summary>
        /// /
        /// </summary>
        /// <param name="pvisitor"></param>
        void procAction(GoldVisitor* pvisitor)
        {
            for (auto iter = goldlist.begin(); iter != goldlist.end(); ++iter)
            {
                (*iter)->Accept(pvisitor);
 
            }
        }
 
 
 
 
    private:
 
        /// <summary>
        /// 黄金列表
        /// </summary>
        list <Gold*> goldlist;
 
    };
}
#endif
 
 
/*****************************************************************//**
 * \file   VisitorConsignee.h
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#pragma once
#ifndef VISITORCONSIGNEE_H
#define VISITORCONSIGNEE_H
 
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
 
#include "Gold.h"
#include "GoldVisitor.h"
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"
 
 
 
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
    /// <summary>
    /// 取黄金人员
    /// </summary>
    class VisitorConsignee : public GoldVisitor
    {
    public:
 
        /// <summary>
        ///
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGenius(GoldGenius* pelem)
        {
            cout << "取黄金人员将黄金“" << pelem->getName() << "”拿给了我!" << endl;
        }
 
        /// <summary>
        ///
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGentle(GoldGentle* pelem)
        {
            cout << "取黄金人员将黄金“" << pelem->getName() << "”拿给了我!" << endl;
        }
 
        /// <summary>
        ///
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGlorious(GoldGlorious* pelem)
        {
            cout << "取黄金人员将黄金“" << pelem->getName() << "”拿给了我!" << endl;
        }
 
    };
 
}
 
#endif
 
/*****************************************************************//**
 * \file   VisitorCounselor.h
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#pragma once
#ifndef VISITORCOUNSELOR_H
#define VISITORCOUNSELOR_H
 
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
 
#include "Gold.h"
#include "GoldVisitor.h"
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"
 
 
 
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
    /// <summary>
    /// 珠宝顾问
    /// </summary>
    class VisitorCounselor : public GoldVisitor
    {
 
    public:
 
        /// <summary>
        /// 天赋
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGenius(GoldGenius* pelem)
        {
            cout << "珠宝顾问建议:“天赋”!" << endl;
        }
 
        /// <summary>
        /// 高尚
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGentle(GoldGentle* pelem)
        {
            cout << "珠宝顾问建议:“高尚”!" << endl;
        }
 
        /// <summary>
        /// 璀璨
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGlorious(GoldGlorious* pelem)
        {
            cout << "珠宝顾问建议:“璀璨”!" << endl;
        }
 
    };
}
#endif
 
/*****************************************************************//**
 * \file   VisitorTollCollector.h
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#pragma once
#ifndef VISITORTOLLCOLLECTOR_H
#define VISITORTOLLCOLLECTOR_H
 
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
 
#include "Gold.h"
#include "GoldVisitor.h"
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"
 
 
 
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
    /// <summary>
    /// 收费人员访问者子类
    /// </summary>
    class VisitorTollCollector : public GoldVisitor
    {
    public:
 
        /// <summary>
        ///
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGenius(GoldGenius* pelem)
        {
            float tmpprice = pelem->getPrice();
            cout << "收费人员累计黄金“" << pelem->getName() << "”的价格:" << tmpprice << endl;
            totalCost += tmpprice;
        }
 
        /// <summary>
        ///
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGentle(GoldGentle* pelem)
        {
            float tmpprice = pelem->getPrice();
            cout << "收费人员累计黄金“" << pelem->getName() << "”的价格:" << tmpprice << endl;
            totalCost += tmpprice;
        }
 
        /// <summary>
        ///
        /// </summary>
        /// <param name="pelem"></param>
        virtual void VisitElmGlorious(GoldGlorious* pelem)
        {
            float tmpprice = pelem->getPrice();
            cout << "收费人员累计黄金“" << pelem->getName() << "”的价格:" << tmpprice << endl;
            totalCost += tmpprice;
        }
 
        /// <summary>
        /// 返回总费用
        /// </summary>
        /// <returns></returns>
        float getTotalCost()
        {
            return totalCost;
        }
    private:
 
        /// <summary>
        /// 总费用
        /// </summary>
        float totalCost = 0.0f; 
 
    };
}
 
 
#endif
 
 
/*****************************************************************//**
 * \file   GeovinDu.h
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#pragma once
#ifndef GEOVINDU_H
#define GEOVINDU_H
 
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
 
#include "Gold.h"
#include "GoldVisitor.h"
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"
 
#include "GoldProcess.h"
 
#include "VisitorConsignee.h"
#include "VisitorCounselor.h"
#include "VisitorTollCollector.h"
#include "ObjectStructure.h"
 
 
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
    /// <summary>
    ///
    /// </summary>
    class GeovinDu
    {
    private:
 
 
    public:
 
        /// <summary>
        ///
        /// </summary>
        void displaySimple();
 
        /// <summary>
        ///
        /// </summary>
        void displayDuSimple();
 
 
 
    };
 
}
 
#endif
 
/*****************************************************************//**
 * \file   GeovinDu.cpp
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
#include "GeovinDu.h"
 
 
using namespace std;
 
 
 
 
namespace DuJewelryVisitorPattern
{
 
    /// <summary>
    ///
    /// </summary>
    void GeovinDu::displaySimple()
    {
        DuJewelryVisitorPattern::Gold* pm1 = new DuJewelryVisitorPattern::GoldGenius();
        DuJewelryVisitorPattern::Gold* pm2 = new DuJewelryVisitorPattern::GoldGentle();
        DuJewelryVisitorPattern::Gold* pm3 = new DuJewelryVisitorPattern::GoldGlorious();    
 
        DuJewelryVisitorPattern::GoldProcess mdcprocobj;
        mdcprocobj.addGold(pm1);
        mdcprocobj.addGold(pm2);
        mdcprocobj.addGold(pm3);
        mdcprocobj.procAction("收费人员");
        mdcprocobj.procAction("取黄金人员");
 
        //释放资源
        delete pm1;
        delete pm2;
        delete pm3;
 
    }
    /// <summary>
    ///
    /// </summary>
    void GeovinDu::displayDuSimple()
    {
        DuJewelryVisitorPattern::VisitorTollCollector visitorgeovindu; //收费人员访问者子类,里面承载着向我收费的算法
        DuJewelryVisitorPattern::GoldGenius goldasplcrp;
        DuJewelryVisitorPattern::GoldGentle  goldfftdnhsp;
        DuJewelryVisitorPattern::GoldGlorious golddlx;
 
        //各个元素子类调用Accept接受访问者的访问,就可以实现访问者要实现的功能
        goldasplcrp.Accept(&visitorgeovindu); //累加价格
        goldfftdnhsp.Accept(&visitorgeovindu);//累加价格
        golddlx.Accept(&visitorgeovindu);     //累加价格
 
        cout << "所有黄金的总价为:" << visitor_geovindu.getTotalCost() << ",收费人员收取了我的费用!" << endl;
 
        //----
        DuJewelryVisitorPattern::VisitorConsignee visitordu; //取黄金员访问者子类,里面承载着向我发黄金的算法
        goldasplcrp.Accept(&visitordu);
        goldfftdnhsp.Accept(&visitordu);
        golddlx.Accept(&visitordu);    
 
        //-----
        DuJewelryVisitorPattern::VisitorCounselor visitorgeovin;  //珠宝顾问访问者子类,里面承载着为我配置算法
        goldasplcrp.Accept(&visitorgeovin);
        goldfftdnhsp.Accept(&visitorgeovin);
        golddlx.Accept(&visitorgeovin);    
 
 
        //---------
        DuJewelryVisitorPattern::ObjectStructure objstruc;
        objstruc.addGold(&goldasplcrp);
        objstruc.addGold(&goldfftdnhsp);
        objstruc.addGold(&golddlx);
        objstruc.procAction(&visitorgeovin);
 
    }
 
}

调用:

/*****************************************************************//**
 * \file   ConsoleDuVisitorPattern.cpp
 * \brief  访问者模式  Visitor Pattern  C++ 14 行为模式
 * 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
 *
 * \author geovindu
 * \date   June 2023
 *********************************************************************/
// ConsoleDuVisitorPattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _UNICODE
 
 
#include <iostream>
#include "GeovinDu.h"
 
using namespace std;
using namespace DuJewelryVisitorPattern;
 
 
int main()
{
    std::cout << "Hello World!!涂聚文 Geovin Du\n";
    GeovinDu geovin;
    geovin.displaySimple();
 
    cout << "************" << endl;
    geovin.displayDuSimple();
 
 
 
 
    system("pause");
    return 0;
}
 
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
 
// 入门使用技巧:
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
#define UNICODE

输出:

Hello World!!涂聚文 Geovin Du
收费人员累计黄金“天赋”的价格:46.8
收费人员累计黄金“高尚”的价格:111.3
收费人员累计黄金“璀璨”的价格:122
所有黄金的总为:280.1,收费人员收取了我的费用!
取黄金人员将黄金“天赋”拿给了我!
取黄金人员将黄金“高尚”拿给了我!
取黄金人员将黄金“璀璨”拿给了我!
************
收费人员累计黄金“天赋”的价格:46.8
收费人员累计黄金“高尚”的价格:111.3
收费人员累计黄金“璀璨”的价格:122
所有黄金的总价为:280.1,收费人员收取了我的费用!
取黄金人员将黄金“天赋”拿给了我!
取黄金人员将黄金“高尚”拿给了我!
取黄金人员将黄金“璀璨”拿给了我!
珠宝顾问建议:“天赋”!
珠宝顾问建议:“高尚”!
珠宝顾问建议:“璀璨”!
珠宝顾问建议:“天赋”!
珠宝顾问建议:“高尚”!
珠宝顾问建议:“璀璨”!
请按任意键继续. . .

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/625846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录:VS2019+OpenCV4.7.0编译

一、准备 OpenCV官网提供了动态库的安装包&#xff0c;但是只有64位&#xff0c;而且没看到编译参数&#xff0c;如果需要32位或者静态链接还是得自己编译。 CMake&#xff1a;https://cmake.org/download/ Visual Studio&#xff1a;https://visualstudio.microsoft.com/zh…

计算机组成原理——中央处理器

文章目录 **一 CPU的功能和基本结构****1 CPU的功能****2 [基本结构](http://t.csdn.cn/bpCt3)****2.1 运算器****2.2 控制器** **二 指令执行过程****1 指令周期****2 指令周期的数据流****2.1 取指周期****2.2 间址周期****2.3 执行周期****2.4 中断周期** **3 指令的执行方案…

chatgpt赋能python:如何下载Python中的jieba包

如何下载Python中的jieba包 随着Python的普及&#xff0c;很多程序员选择使用Python作为自己的主力编程语言。对于自然语言处理方面的任务&#xff0c;jieba是Python中一个非常优秀的分词工具。那么&#xff0c;如何下载和使用Python中的jieba包呢&#xff1f;本篇文章将为您详…

【MySQL数据库 | 第十四篇】多表查询案例

目录 前言&#xff1a; 引入背景&#xff1a; 练习&#xff1a; 前言&#xff1a; 在第十三篇我们已经详细的介绍了多表查询的类别以及每一个类别的语法&#xff1a;【MySQL数据库 | 第十三篇】多表查询&#xff0c;今天我们将通过案例来巩固我们对多表查询语法的熟悉度。 引入…

JavaSE笔记(二)重制版

面向过程篇 前面我们已经认识了Java语言的相关特性&#xff0c;并且已经成功配置好了开发环境&#xff0c;从这节课开始&#xff0c;我们就可以正式进入到Java语言的学习当中了。Java语言是一门面向对象的语言&#xff0c;但是在面向对象之前&#xff0c;我们还得先学会如何面…

【IMX6ULL驱动开发学习】05.IMX6ULL驱动开发_编写第一个hello驱动【熬夜肝】

经过以下四个步骤&#xff0c;终于可以开始驱动开发了 01.安装交叉编译环境【附下载地址】 02.IMX6ULL烧写Linux系统 03.设置IMX6ULL开发板与虚拟机在同一网段 04.IMX6ULL开发板与虚拟机互传文件 目录 一、获取内核、编译内核 二、创建vscode工作区&#xff0c;添加内核目录…

《计算机组成原理》期末考试手写笔记——模块五: 并行主存系统(交叉存储器+顺序存储器“带宽”的计算方法)

目录 &#xff08;一&#xff09;知识点总结 &#xff08;二&#xff09;经典考试例题 1.设主存储器容量为256字&#xff0c;字长为32位&#xff0c;模块数m4&#xff0c;分别用顺序方式和交叉方式进行组织。主存储器的存储周期T200ns&#xff0c;数据总线宽度为32位&#x…

EMQ X(2):EMQ X服务端环境搭建与配置

1 安装 EMQ X 目前支持的操作系统: Centos6Centos7OpenSUSE tumbleweedDebian 8Debian 9Debian 10Ubuntu 14.04Ubuntu 16.04Ubuntu 18.04macOS 10.13macOS 10.14macOS 10.15Windows Server 2019 产品部署建议 Linux 服务器&#xff0c;不推荐 Windows 服务器。 安装的方式有…

【Linux】HTTP协议

目录 &#x1f680;前言&#x1f683;HTTP协议 &#x1f684;1、URL网址&#x1f685;2、URL的编码和解码&#x1f687;3、HTTP协议格式&#x1f688;4、HTTP请求&#x1f689;4.1、 HTTP GET和POST方法&#x1f68b;4.2、HTTP状态码&#x1f68a;4.3、HTTP常见Header &#x1…

redis架构设计: redis-server的启动(硬核分析)

怎么在windows上用clion搭建redis的源码阅读环境 请看我的上一篇文章 redis启动之后都干了什么呢? 我们知道&#xff0c;redis的服务端对应的源码位置是server.c main函数是程序启动的入口 &#xff0c;下面我来一行一行的分析server.c的源码 1、定义时间函数变量 struct …

chatgpt赋能python:Python多种输出格式详解

Python多种输出格式详解 对于Python程序员来说&#xff0c;输出是非常重要的。无论是在开发阶段还是在生产环境中&#xff0c;输出都是我们调试程序和确认程序运行是否正常的重要手段。Python标准库提供了丰富的输出格式&#xff0c;本文介绍了几种常见的输出格式及其使用方法…

因为写不出拖拽移动效果,我恶补了一下Dom中的各种距离

目录 背景 JS Dom各种距离释义 第一个发现 window.devicePixelRatio 的存在 document.body、document.documentElement和window.screen的宽高区别 scrollWidth, scrollLeft, clientWidth关系 元素自身和父级元素的scrollWidth和scrollLeft关系? offsetWidth和clientWid…

【FDA】图像通过傅里叶变换改变光谱风格,实现域自适应

FDA: Fourier Domain Adaptation for Semantic Segmentation, CVPR2020 翻译&#xff1a;CVF2020邻域自适应/语义分割&#xff1a;FDA: Fourier Domain Adaptation for Semantic SegmentationFDA&#xff1a;用于语义分割的傅立叶域自适应算法_傅里叶域适应_HheeFish的博客-CS…

【TCP/IP】多进程服务器的实现(进阶) - 进程和僵尸进程

目录 僵尸(Zombie)进程 僵尸进程的产生机制 僵尸进程的危害 僵尸进程的销毁 wait函数 waitpid函数 进程管理在网络编程中十分重要&#xff0c;如果未处理好&#xff0c;将会导致出现“僵尸进程”&#xff0c;进而影响服务器端对进程的管控。 僵尸(Zombie)进程 第一次听到…

数据类型

常见的数据类型&#xff1a; int&#xff0c;整数类型&#xff08;整形&#xff09;bool&#xff0c;布尔类型str&#xff0c;字符串类型list&#xff0c;列表类型tuple&#xff0c;元组类型dict&#xff0c;字典类型set&#xff0c;集合类型float&#xff0c;浮点类型&#x…

python Web开发 flask轻量级Web框架实战项目--学生管理系统

上次发的一篇文章&#xff0c;有很多朋友私信我要后面的部分&#xff0c;那咱们就今天来一起学习一下吧&#xff0c;因为我的数据库这门课选中的课题是学生管理系统&#xff0c;所以今天就以这个课题为例子&#xff0c;从0到1去实现一个管理系统。数据库设计部分我会专门出一个…

《Java 核心技术面试》课程笔记(十二)

Java 有几种文件拷贝方式&#xff1f;哪一种最高效&#xff1f; 典型回答 Java 有多种比较典型的文件拷贝实现方式&#xff0c;比如&#xff1a;利用java.io 类库&#xff0c;直接为源文件构建一个 FileInputStream 读取&#xff0c;然后再为目标文件构建一个 FileOutputStre…

chatgpt赋能python:Python模块(Module)是什么?

Python模块&#xff08;Module&#xff09;是什么&#xff1f; Python模块&#xff08;Module&#xff09;是指一些预先编写好的代码&#xff0c;这些代码可以在程序中被引入和使用。它们可以包含可以复用的函数、常量和类。Python模块是一种封装程序代码的方法。 下载Python…

领取的AWS亚马逊云服务器到期会扣费的问题解决办法。

本篇文章主要讲解&#xff0c;领取的AWS亚马逊服务器到期后会持续扣费问题的解决办法。 作者&#xff1a;任聪聪 日期&#xff1a;2023年6月8日 关于aws服务器一年免费期限到期后扣费的问题&#xff0c;网络上的文章并不是很全&#xff0c;故此我通过个人的经验进行了如下的教程…

chatgpt赋能python:Python怎么print换行?

Python怎么print换行&#xff1f; 如果你是一个Python开发者&#xff0c;你可能遇到过需要在Python中打印输出换行的情况。本文将分享几种方式&#xff0c;让你学会如何在Python中print换行。 1. 使用"\n" 您可以在print语句中使用"\n"来表示换行。这个…