c++远征之模板篇——函数模板、类模板

以下内容源于慕课网的学习整理,如有侵权,请告知删除。



函数模板(vs模板函数)


1、为什么需要模板?

  • 函数体相同,只是类型不一样而已。
  • 那么能否把数据的类型当做参数传递呢?肯定是可以的,这是模板。


2、关键字:template,typename,class

  • 后二者的作用是一样的





  • 变量作为模板的参数:


  • 多参数函数模板,typename和class可以混用


  • 函数模板与重载





类模板

1、为什么需要类模板?

  • 原因和函数模板一样,整体相同,而数据类型(一般指数据成员的数据类型,或者成员函数的返回参数类型、函数体中的数据的类型)不同。


2、使用举例

  • 函数实体定义在类外时的写法。
  • 定义在类内时,和普通的成员函数没有任何区别。
  • 注意,写在类外的函数,需要使用template<typename T>

 





3、模板代码不能分离编译

  • 不能分别写在.h .cpp


4、代码示例

#include <iostream>
using namespace std;/*** 定义一个矩形类模板Rect* 成员函数:calcArea()、calePerimeter()* 数据成员:m_length、m_height*/
template<typename T>
class Rect
{
public:Rect(T length,T height);T calcArea();T calePerimeter();
public:T m_length;T m_height;
};/*** 类属性赋值*/
template<typename T>
Rect<T>::Rect(T length,T height)
{m_length = length;m_height = height;
}/*** 面积方法实现*/
template<typename T>
T Rect<T>::calcArea()
{return m_length * m_height;
}/*** 周长方法实现*/
template<class T>
T Rect<T>::calePerimeter()
{return ( m_length + m_height) * 2;
}int main(void)
{Rect<int> rect(3, 6);cout << rect.calcArea() << endl;cout << rect.calePerimeter() << endl;return 0;
}




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国外知名的开源项目托管网站

国外知名的开源项目托管网站 托管站点Top20如下&#xff1a; 1. SourceForge SF为大家所熟知&#xff0c;开源项目的大本营&#xff0c;SF托管至少28万个开源项目&#xff0c;一天的下载量超过200万。 2. GitHub GitHub托管使用Git版本控制系统的公开和私有项目。 目前该网站托…

js初学总结

基础 交换变量方式 //利用第三方变量进行交换var num1 10;var num2 20;var temp;temp num1;num1 num2;num2 temp;console.log(num1);console.log(num2);//一般适用于数字交换var num1 10;var num2 20;num1 num1 num2;num2 num1 - num2;num1 num1 - num2;console.l…

js去空格函数(方法)

<script type"text/javascript"> //去左空格; function ltrim(s){ return s.replace(/(^\s*)/, ""); } //去右空格; function rtrim(s){ return s.replace(/(\s*$)/, ""); } //去左右空格; function trim…

c++远征之模板篇——标准模板库(STL)

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 常见的设计模板 1、vector&#xff0c;向量 &#xff08;1&#xff09;本质是对数组的封装&#xff1b; &#xff08;2&#xff09;能够在常数时间内完成读取&#xff1b; &#xff08;3&#xf…

避免Castle Windsor引起的内存泄露

原文地址&#xff1a; http://nexussharp.wordpress.com/2012/04/21/castle-windsor-avoid-memory-leaks-by-learning-the-underlying-mechanics/CASTLE WINDSOR: AVOID MEMORY LEAKS BY LEARNING THE UNDERLYING MECHANICS Lifestyles In am not going to explain all the dif…

数据结构探险——队列篇

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、什么是队列&#xff1f; &#xff08;1&#xff09;先入先出的模型&#xff08;FIFO&#xff09;。 &#xff08;2&#xff09;队头&#xff0c;队尾。 &#xff08;3&#xff09;细分为普通队…

Linux系统时间和硬件时间设置

在Linux中有硬件时钟与系统时钟两种时钟。硬件时钟是指主机板上的时钟设备&#xff0c;也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟&#xff0c;那么它们之间就会存在差异。当Li…

小程序购物车抛物线(贝塞尔曲线实现)

话不多说上代码https://developers.weixin.qq.com/s/U4SmwPmg7uaj 转载于:https://www.cnblogs.com/gkxNB/p/11400075.html

hdu2570 迷瘴

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2570 题目的意思&#xff1a;给你n个体积相同浓度不同的解药&#xff0c;让你配置出浓度不大于w的最大体积的解药&#xff1a; 解题过程:就是一个简单的排序加判断。弄了很久还是没有弄好&#xff0c;后来才发现…

数据结构与算法之冒泡排序

转载于:https://www.cnblogs.com/yakun/p/3634457.html

数据结构探险——栈篇

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、栈要素 栈底&#xff08;不变&#xff09;、栈顶&#xff08;随着入栈和出栈而改变&#xff09; 2、栈机制的实现 &#xff08;1&#xff09;栈的相关机制 判断栈的空满&#xff1b;入栈、出栈…

windows下修改tomcat的startup.bat脚本文件后台运行

1、修改startup.bat文件 rem Get remaining unshifted command line arguments and save them in the set CMD_LINE_ARGS :setArgs if ""%1"""""" goto doneSetArgs set CMD_LINE_ARGS%CMD_LINE_ARGS% %1 shift goto setArgs :doneSet…

开源框架:CocoaPods 安装学习教程

转载 开源框架:CocoaPods 引言: CocoaPods是一个可以帮你集中管理第三方库的开源项目,运行在Ruby的环境下,基于GitHub托管优势,你可以很方便的查阅目前依赖于CocoaPods的资源. 并且,CocoaPods是可靠,稳定,安全的.可以为你在使用第三方库资源时节省大部分的配置和部署时间.更专心…

SESSION 回收机制

session.gc_maxlifetime session.gc_probability session.gc_divisor session.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc&#xff08;garbage collection 垃圾回收&#xff09;进程的概率。此概率用 gc_probability/gc_divisor 计算得来…

数据结构探险——线性表篇

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、线性表 概念 机制的实现 2、顺序表 构造函数、析构函数 清空线性表&#xff0c;判空 求当前线性表长度&#xff0c;获取某个序号的元素 定位某个元素的位置 找前驱&#xff08;找后驱类似的&…

Mysql优化之执行计划查看

我们经常说到mysql优化&#xff0c;优化中一种常见的方式就是对于经常查询的字段创建索引。那么mysql中有哪些索引类型呢&#xff1f; 一、索引分类1、普通索引&#xff1a;即一个索引只包含单个列&#xff0c;一个表可以有多个单列索引 2、唯一索引&#xff1a;索引列的值必须…

.NET二级域名共享Session

ASP.NET二级域名站点共享Session状态今天&#xff0c; 我要写的是如何在二级域名站点之间,主站点和二级域名站点之间共享Session。首先, Session要共享&#xff0c;站点之间SessionID必须要一致&#xff0c;那怎么保证SessionID一致呢&#xff1f;ASP.NET中的SessionID是存储在…

浅谈程序员创业

浅谈程序员创业——作者:邓学彬、Jiesoft1.什么是创业&#xff1f;   关于“创业”二字有必要重新学习一下&#xff0c;找了两个相对权威定义&#xff1a;创业就是创业者对自己拥有的资源或通过努力能够拥有的资源进行优化整合&#xff0c;从而创造出更大经济或社会价值的过程…

jmeter+Fiddler:通过Fiddler抓包生成jmeter脚本

Fiddler是目前最常用的抓包工具之一&#xff0c;它作为客户端和服务器端之间的代理&#xff0c;记录客户端和服务器之间的所有请求(http/https)&#xff0c;可以针对特定的请求过滤&#xff0c;分析请求和响应的数据、设置断点、调试、修改请求的数据&#xff0c;甚至可以修改服…

数据结构探险——树篇

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 树存在概念中&#xff0c;是对数组或者链表的一种操作方式的概念。 一、与树有关的一些基础概念 &#xff08;1&#xff09;树 有限节点的集合&#xff1b; &#xff08;2&#xff09;度 某个节点的…