C++模板 · 为什么要引入模板机制?

  刚学过类模板时,很不理解,甚至觉得这简直没有用,在自己骗自己嘛!明明很方便的东西,偏偏要加个类模板来回折腾。可能因为我们刚开始写的程序很简单,有时候,可能程序复杂一点,对理解一些概念更有帮助。

  今天在网上发现了一篇很好的文章,特此摘录。

- 模板的概念

  模板是实现代码重用机制的一种工具,它可以实现类型参数化, 即把类型定义为参数,从而实现了真正的代码可重用性。模板可以分为两类:一个是函数模板,一个是类模板。

  举例理解:

//函数1
int max(int a, int b)
{
    return (a>b ? a : b);
}

//函数2
float max(float a, float b)
{
    return (a>b ? a : b)
}

//函数3
double max(double a, double b)
{
    return (a>b ? a : b)
}

  但在主函数中,如果我们定义了char a, b; 使用max()函数时,程序就会出错,因为我们没有定义char类型的重载版本。

  如果我们重新审视上述的max()函数,它们具有同样的功能——求两个变量的最大值。能否只写一套代码来解决这个问题呢?当然可以,所以C++引入了模板机制。 

下一篇:C++模板:函数模板的写法

原文地址:https://www.cnblogs.com/t11383/p/9703472.html

时间: 2024-11-07 18:39:26

C++模板 · 为什么要引入模板机制?的相关文章

CI模板中如何引入模板

<?php $this->load->view('index/head.html') ?> CI模板中如何引入模板

mvc理念和thinkphp的语法特征 thinkphp引入模板

mvc即模型(model)-视图(view)-控制器(controller)的缩写 控制器很重要,功能性的东西要靠它实现,模型我还没接触到,只知道它对数据库负责,类似一个大控件吧... 速度... 一个网站说白了还是给用户看的视图,那么控制器可以控制视图... 控制器在D:\WWW\myapp\Index\Lib\Action里面 入口文件是index.php <?php define('APP_NAME','Index'); //项目名称 define('APP_PATH','./Index/

node引入模板

大家请看一下四种node引入方式,能看出些什么呢? 大家都知道npm模板有很多很多种具体大家可登陆npm官网查询,我们可以打开cmd小黑板自行下载所需要的模板,下载下来的模板会自行存入一个node_modules的文件夹中,需要调用时直接声明一个变量=require("包名字")如上面第二个. 当然除了引用官方模板包我们自己也可以写一些自己的模板不过引用时写的是相对路径,如上面第三个.大家可能会觉得相对路径好麻烦又要./又要写后缀,象官方包那样只写个名字多方便,当然可以!这时我们就需要

C++入门经典-例9.3-类模板,简单类模板

1:使用template关键字不但可以定义函数模板,而且可以定义类模板.类模板代表一族类,它是用来描述通用数据类型或处理方法的机制,它使类中的一些数据成员和成员函数的参数或返回值可以取任意数据类型.类模板可以说是用类生成类,减少了类的定义和数量. 2:类模板的一般定义形式如下: template <类型形式参数表> class 类模板名 { ...//类模板体 } 类模板成员函数的定义形式如下: template <类型形式参数表> 返回类型 类模板名 <类型名表>::

泛函编程—模板函数_类模板

函数业务逻辑一样,只是函数参数类型不同函数模板的本质:类型参数化——泛型编程 语法: template <typename T> template <class T1,class T2>多个参数类型 类型 函数名(形式参数表) { 语句序列: } 函数模板基础: template是告诉C++编译器,开始泛型编程,看到T,不要随便报错 template <typename T>//一个模板 void myswap(T& a, T& b) { T c; c

【C++】模板简述(二):函数模板

我们上文讲了,模板的引入,我们发现在某种特殊的情况下,必须得通过模板才能完美的解决问题. 本文就来简述一下函数模板的基本使用. 一.函数模板格式 template<typename Param1, typename Param2,...,class Paramn> 返回值类型 函数名(参数列表){ ... } 二.函数模板的实例 //T表示类型,具体是什么不知道,实例化的时候才知道 //typename可以用class代替,但推荐使用typename //注意:typename不能用struc

模板引擎artTemplate及模板预编译器TmodJS的使用入门

一.为什么要使用前端模板? 主要为了解决UI层与业务逻辑的纠缠不清.比如我们需要根据后端返回的数据动态生成一个表格或者类似表格的DOM(比如ul > li等)时,按照传统的方式,需要我们先获取数据,然后在页面的js中通过遍历数据.提取相关数值以及动态拼接html字串的方式,生成最终的DOM.这样就产生了UI与业务逻辑的纠缠.如果只是偶尔或者局部使用可能问题不明显,但如果代码量庞大.业务或数据十分复杂的情况下,这种方式产生的代码会十分不利于后期维护,这想必是每一个开发人员都不愿看到的.因此,便产生

Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)

阅读目录(Content) 模板语法之变量 模板之过滤器 default length filesizeformat date slice truncatechars safe 模板之标签 自定义标签和过滤器 模板继承 (extend) 模板语法之include 前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中. 1 2 3 4 def current_dat

模板类的约束模板友元函数:template friend functions

本来这篇博客是不打算写的,内容不是很难,对于我自己来讲,更多的是为了突出细节. 所谓template friend functions,就是使友元函数本身成为模板.基本步骤:1,在类定义的前面声明每个模板函数.eg:template <typename T> void counts(); template <typename T> void report<>(T &);2,在类声明中再次将模板声明为友元. template <typename TT>