zoukankan      html  css  js  c++  java
  • c++ standard library II

    Template specialization
    If we want to define a different implementation for a template when a specific type is passed as template parameter, we can declare a specialization of that template.
    
    For example, let's suppose that we have a very simple class called mycontainer that can store one element of any type and that it has just one member function called increase, 
    which increases its value. But we find that when it stores an element of type char it would be more convenient to have a completely different implementation with a function
    member uppercase, so we decide to declare a class template specialization for that type:
    Template specialization
    // template specialization
    #include <iostream>
    using namespace std;
    
    // class template:
    template <class T>
    class mycontainer {
        T element;
      public:
        mycontainer (T arg) {element=arg;}
        T increase () {return ++element;}
    };
    
    // class template specialization:
    template <>
    class mycontainer <char> {
        char element;
      public:
        mycontainer (char arg) {element=arg;}
        char uppercase ()
        {
          if ((element>='a')&&(element<='z'))
          element+='A'-'a';
          return element;
        }
    };
    
    int main () {
      mycontainer<int> myint (7);
      mycontainer<char> mychar ('j');
      cout << myint.increase() << endl;
      cout << mychar.uppercase() << endl;
      return 0;
    }

  • 相关阅读:
    结对
    汉堡 结对2.0
    《构建之法》第四章读后感
    复利计算单元测试
    实验一 命令解释程序的编写
    《构建之法》读后感
    复利计算 2.0
    了解和熟悉操作系统
    学习进度条
    perl的贪婪和非贪婪模式
  • 原文地址:https://www.cnblogs.com/cjyp/p/11968570.html
Copyright © 2011-2022 走看看