`
hcmfys
  • 浏览: 356369 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

C++ template

阅读更多
 
#include <iostream>

using namespace std;


template <class T>
inline T Max(T a, T b)
{
    return a > b ? a : b;
}

int main()
{
    int a = 1, b = 2;

    
    cout << Max(a, b) << endl;
    cout << Max(1.0, 2.0) << endl;
    cout << Max("hello", "world") << endl;

    
    return 0;
}

2.类模板

#include <iostream>

using namespace std;

template <class T>
class A
{
private:
    T a;
public:
    A(T x) { a = x; }
    T get() { return a; }
};

int main()
{
    A<double> a(10);

    cout << a.get() << endl;

    return 0;
}

3.模板特殊化:当你在使用一个模板,而又想对某一个特殊的类型做不同的实现时,就需要一个特殊化的模板声明。

// template specialization
#include <iostream>
using namespace std;

// class template:
template <class T>
class specTemplate
{
    T m_var;
public:
    specTemplate (T inData) { m_var = inData; }
    T increase () { return ++m_var; }
};

// class template specialization:
template <>
class specTemplate <char>
{
    char m_var;
public:
    specTemplate (char arg) { m_var = arg; }
    char upperCase ()
    {
        if ((m_var >= 'a') && (m_var <= 'z'))
            m_var += 'A'-'a';
        return m_var;
    }
};

int main ()
{
    specTemplate<int> myint (7);
    specTemplate<char> mychar ('j');

    cout << myint.increase() << endl;
    cout << mychar.upperCase() << endl;
    
    return 0;
}

4.模板默认值:

template <class T = char, int N = 10>
class Test {..};

1)模板的类型也可有默认值;

2)模板的类型也可以是regular type,并非一定是以class或typename修饰的类型;

分享到:
评论

相关推荐

    (C++元编程)C++ Template Metaprogramming Concepts, Tools, and Techniques from Boost and Beyond.chm

    《C++ Template Metaprogramming Concepts, Tools, and Techniques from Boost and Beyond》是关于C++元编程的一本经典教材,适合那些对软件构造有深入兴趣的读者。元编程是C++语言的一个强大特性,它允许程序员在...

    C++Template

    侯捷老师的《C++Template》一书深入浅出地介绍了C++模板的各个方面,包括基础概念、高级技巧以及实际应用,对于理解和掌握C++模板编程有着极大的帮助。通过阅读这本书,开发者可以更好地利用模板这一强大的工具,...

    C++Template电子书及代码

    这份"C++Template电子书及代码"资源为学习C++模板提供了宝贵的材料,下面我们将深入探讨C++模板的基础知识、应用场景以及一些高级特性。 1. 模板基础: - 函数模板:C++函数模板允许我们创建不依赖于特定数据类型...

    C++ Template Metaprogramming (Chm和Pdf)

    C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond,《C++模板元编程》英文版。C++ In-Depth系列丛书之一,C++程序员必备。

    C++ Template Metaprogramming 原书附带示例代码

    这是C++ Template Metaprogramming原书附带的例子代码,可以方便各位进行研习,请首先编译开篇的第一个例子,以测试你手头的编译器对模板的支持程度。 另,有的亲反映上载的书无法打开,可能是Windows7进行了权限...

    C++ Template Metaprogramming

    本资源——"C++ Template Metaprogramming"——提供了一个深入探讨这一领域的英文版指南。 模板是C++语言中的一个关键特性,它允许我们定义函数和类的通用模板,然后在不同类型的参数上实例化它们。模板元编程则是...

    C++ template 全览 第一篇(1~5节)(简体中文)

    ### C++ Template 全览知识点概述 #### 一、引言 C++模板自问世以来,在不断发展中成为了C++编程语言的重要组成部分。然而,由于其复杂性和灵活性,模板经常引发误解和争议。随着越来越多的开发者认识到模板的强大...

    Addison Wesley - C++ Template Metaprogramming Concepts Tools And Techniques From Boost And Beyond

    Addison Wesley - C++ Template Metaprogramming Concepts Tools And Techniques From Boost And Beyond

    C++ Template Metaprogramming (英文版).chm

    C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond

    C++ template 中文版

    C++模板是C++语言中的一个强大特性,它允许程序员创建泛型代码,即能够处理多种数据类型的代码。模板在C++中分为两种主要类型:函数模板和类模板。候捷先生的《C++模板》中文版是一本深入探讨这个主题的教材,非常...

    C++Template简体中文版、C++Template侯捷繁体版、C++Template第二版(英文版)

    C++Template简体中文版、C++Template侯捷繁体版、C++Template第二版(英文版)三合一

    C++ Template

    C++ 模板是C++编程语言中的一个强大特性,它允许程序员定义泛型代码,即可以在多种数据类型上工作的代码。模板分为两种主要类型:函数模板和类模板。本篇将深入探讨C++模板的基本概念、使用方法以及在实际编程中的...

    C++ template教程 中文版和英文版

    C++模板是C++语言中的一个强大特性,它允许程序员创建泛型代码,即能够处理多种数据类型的代码。模板在C++中分为两种主要类型:函数模板和类模板。本教程将深入探讨这两种模板以及相关的知识点。 首先,我们来看...

    C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond

    C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond By David Abrahams, Aleksey Gurtovoy Publisher : Addison Wesley Professional Pub Date : December...

Global site tag (gtag.js) - Google Analytics