zoukankan      html  css  js  c++  java
  • 随笔

    #include <string>
    class CompanyA{
    public:
        void sendCleartext(const std::string& msg){};
        void sendEncrypted(const std::string& msg){};
    };
    
    class CompanyB{
        void sendCleartext(const std::string& msg){};
        void sendEncrypted(const std::string& msg){};
    };
    
    class CompanyZ{
    public:
        void sendEncrypted(const std::string& msg){};
    };
    
    class MsgInfo{};
    
    template<typename Company>
    class MsgSender{
    public:
        void sendClear(const MsgInfo& info)
        {
            std::string msg;
            Company c;
            c.sendCleartext(msg);
        }
        void sendSecret(const MsgInfo& info)
        {
            std::string msg;
            Company c;
            c.sendEncrypted(info);
        }
    };
    
    //针对CompanyZ全特化
    template<>
    class MsgSender<CompanyZ>
    {
    public:
        void sendClear(const MsgInfo& info)
        {
    
        }
    };
    
    template<typename Company>
    class LoggingMsgSender : public MsgSender<Company>
    {
    public:
        void sendClearMsg(const MsgInfo& info)
        {
            sendClear(info);
        }
    };
    
    int main()
    {
        LoggingMsgSender<CompanyZ> a;
        MsgInfo info;
        a.sendClearMsg(info);
        return 0;
    }
  • 相关阅读:
    Shell编程—用户输入
    Shell编程—结构化命令
    Shell编程—基础脚本
    跳表
    分布式项目——电商秒杀
    Dubbo详解
    Kafka工作流程
    Kafka内部实现原理
    Zk实现分布式锁
    Leetcode::Pathsum & Pathsum II
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/6580329.html
Copyright © 2011-2022 走看看