zoukankan      html  css  js  c++  java
  • C++ 模板特化、偏特化测试程序

    #include <iostream>
    
    
    // 偏特化的模板不会自己添加构造函数 ctor 和 析构函数 dtor
    
    
    #if 1
    // P1
    template <typename T1, typename T2>
    class Stack
    {
    public:
    	Stack() { std::cout << "T, T" << std::endl; };
    	~Stack() {};
    
    private:
    
    };
    
    
    #endif // 0
    
    
    ////////////////////////////////////////////////////////////////////
    
    #if 1
    // P2
    template <typename T1>
    class Stack<int, T1>
    {
    public:
    	Stack() { std::cout << "int, T1" << std::endl; };
    	~Stack() {};
    
    private:
    
    };
    
    #endif // 0
    
    ////////////////////////////////////////////////////////////////////
    
    #if 1
    // P3
    template <typename T1>
    class Stack<T1, int>
    {
    public:
    	Stack() { std::cout << "T1, int" << std::endl; };
    	~Stack() {};
    
    private:
    
    };
    
    #endif // 0
    
    ////////////////////////////////////////////////////////////////////
    
    #if 0
    // P4
    template <>
    class Stack<int, int>
    {
    public:
    	Stack() { std::cout << "int, int" << std::endl; };
    	~Stack() {};
    
    private:
    
    };
    
    //template<>
    //inline void Stack<int, int>::p()
    //{
    //	std::cout << "T, int" << std::endl;
    //}
    #endif // 0
    
    int main()
    {
    								// 调用优先级
    	Stack<double, double>	s1; // P1
    	Stack<float, int>		s2; // P3 > P1
    	Stack<int, int>			s3; // P4 > (P3 或者 P2,不能共存) > P1
    	Stack<int, double>		s4; // P2 > P1
    
    }
    

      

  • 相关阅读:
    03 flex布局
    03 BOM
    02 事件高级
    01 DOM
    06 js 作用域 对象
    Springboot连接Greenplum,分页查询
    Vim常用命令
    Windows IntelliJ IDEA 快捷键终极大全
    IDEA构建Maven项目生成的文件说明(.mvn、mvnw、mvnw.cmd、.gitignore、.iml、.idea、pom.xml)
    Linux下的tar压缩解压缩命令详解
  • 原文地址:https://www.cnblogs.com/alexYuin/p/11921840.html
Copyright © 2011-2022 走看看