zoukankan      html  css  js  c++  java
  • 类模板使用示例(二)类模板整体特化

    特化的目的: 表明该模板在特殊类型下具有不同的行为

    注意:特化的实现可以和基本类模板的实现完全不同

    Stack2.h代码:

    #ifndef STACK2_H
    #define STACK2_H
    
    #include <deque>
    #include <string>
    #include <stdexcept>
    #include "TestCC.h"
    template<>
    class Stack<std::string>
    {
        public:
            void push(std::string const&);
            void pop();
            std::string top() const;
            bool empty() const
            {
                return elems.empty();
            }
        private:
            std::deque<std::string> elems;
    };
    
    void Stack<std::string>::push(std::string const& elem)
    {
        std::cout << "Hello World" << std::endl;
        elems.push_back(elem);
    }
    
    void Stack<std::string>::pop()
    {
        if (elems.empty())
            throw std::out_of_range("Stack<std::string>::pop(): empty stack");
    
        elems.pop_back();
    }
    
    std::string Stack<std::string>::top() const
    {
        if (elems.empty())
            throw std::out_of_range("Stack<std::string>::top(): empty stack");
    
        return elems.back();
    }
    
    #endif // STACK2_H

    测试代码main.cpp:

    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include "Stack2.h"
    
    using namespace std;
    
    int main()
    {
        try
        {
            Stack<int> intStack;
            intStack.push(7);
            cout << intStack.top() << endl;
    
            Stack<string> stringStack;
            stringStack.push("hello");
            cout << stringStack.top() << endl;
            stringStack.pop();
            stringStack.pop();
        }
        catch (std::exception const& ex)
        {
            cerr << "Exception: " << ex.what() << endl;
            return EXIT_FAILURE;// n stdlib.h
        }
    }

    结果:

  • 相关阅读:
    MVC-- 网页中整、小数加法
    装饰器练习——Python
    父类对象对子类对象方法的调用
    Python----父与子的关系
    分析句子,以空格为分割找出单词
    模拟成绩数据库
    【算法竞赛-入门经典】圆柱体的表面积
    【算法竞赛-入门经典】计算并输出1+2的值
    前中后缀表达式
    代码基本结构
  • 原文地址:https://www.cnblogs.com/AmitX-moten/p/4446007.html
Copyright © 2011-2022 走看看