栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++高级编程(5)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++高级编程(5)

模板函数与模板类

知识点

  • 模板相关概念
  • 标准模板库
  • 自定义函数模板
  • 自定义类模板
  • 模板特例化
  • 自定模板应用

在 C++ 中跟模板相关的关键字有:template、typename、class。

  • template 关键字是声明模板的关键字。
  • typename 与 class 在使用模板时的功能是一样的,没有区别。

函数模板格式: 

template 
返回值类型 函数名(参数列表)
{
   // 函数的主体
}

 

template
T max(const T&a, const T&b)
{
    return a>b?a:b;
}

 

类模板格式:

template 
class 类名
{
    // 类主体
}

 

template 
class MyVector
{
public:
    MyVector(int len);
    ~MyVector();
    // ...
private:
    T *arr;
    // ...
}

函数模板与模板函数、类模板与模板类

函数模板与模板函数、类模板与模板类在概念上看似很相似,但需要注意这是两个不同的概念。

  • 函数模板是编写函数的模板代码。
  • 模板函数是指函数模板具体使用时产生带有具体数据类型的函数。
  • 类模板是编写的类模板代码。
  • 模板类是指使用类模板实例化带有类型的对象。

模板 + 重载 = 模板特例化。

在开发时常规的模板可能无法满足需求,这个时候就需要使用模板特例化,所谓特例化就是重载模板特殊数据类型。

 

#include 
#include 
using namespace std;

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

template<>
char* Max(char* a, char* b)
{
    return (strcmp(a, b) > 0 ? (a) : (b));
}

int main()
{
    float a = 4.7, b = 5;
    cout << Max(a, b) << endl;
    cout << Max('a', 'b') << endl;

    const char* s1 = "hello";
    const char* s2 = "world";
    cout << Max(s1, s2) << endl;

    return 0;
}

自定义类模板

模板使得程序开发时效率更高,不仅如此,当你自己编写完成一个模板感觉自己做了一件伟大的事情,因为以后再次遇到相同情况时直接使用之前编写好的模板即可,不需要重新开发了。瞬间感觉心情好了很多,以后都不用再做重复的事情了,并且可以按照自己的习惯开发、使用。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433560.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号