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;
    }

  • 相关阅读:
    Python staticmethod() 函数
    Python open() 函数
    Python input() 函数
    Python divmod() 函数
    Python abs() 函数
    instanceof和类型转换
    多态
    方法重写
    this
    Super详解
  • 原文地址:https://www.cnblogs.com/cjyp/p/11968570.html
Copyright © 2011-2022 走看看