C++函数模板及类模板 ← 面向对象

【知识点】
泛型编程,是 C++ 的一种重要编程思想,其利用的主要技术是模板
C++ 提供两种模板机制:
函数模板(function template)和类模板(class template)。

【算法代码:函数模板】
● 函数模板的使用方法与调用普通函数的方法一样。
● 调用函数模板时,会
自动模板参数 T 替换为指定的类型参数。

#include <iostream>
using namespace std;//function template
template <class T>
T imax(T x, T y) {if(x>y) return x;else return y;
}int main() {int a,b;double da,db;cout<<"Please input two integers:";cin>>a>>b;cout<<"Please input two decimals:";cin>>da>>db;cout<<"The maximum value of integers is "<<imax(a,b)<<"."<<endl;cout<<"The maximum value of decimals is "<<imax(da,db)<<"."<<endl;return 0;
}/*
in:
Please input two integers:12 6
Please input two decimals:2.7 1.2out:
The maximum value of integers is 12.
The maximum value of decimals is 2.7.
*/


【算法代码:类模板】
● C++ 类模板,是一种用于创建通用类的机制。
● 类模板的实现和普通类类似。
● 类模板实例化和函数模板实例化不同,类模板实例化需在类模板名字后跟 <实例化类型>,即必须
显示实例化不能自动类型推导。也就是说,调用类模板时,不会自动将模板参数 T 替换为指定的类型参数。

#include <bits/stdc++.h>
using namespace std;//class template,allow setting default parameters
template<class T1,class T2=int>
class Person {public:T1 iName;T2 iAge;public:Person(T1 name,T2 age) {this->iName=name;this->iAge=age;}void showPerson() {cout<<"name:"<<this->iName<<endl;cout<<"age:"<<this->iAge<<endl;}
};int main() {Person<string,int> p1("Son Goku",888);p1.showPerson();//Person p("Son Goku", 1000); //no using automatic type inferencePerson<string> p2("Cho Hakkai",666);p2.showPerson();return 0;
}/*
name:Son Goku
age:888
name:Cho Hakkai
age:666
*/







 

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

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

相关文章

嵌入式C语言中头文件计设规则方法

我是阿梁,最近在负责的项目代码,也算是祖传代码了,里面有很多头文件嵌套的情况,即a.h包含b.h,b.h又包含c.h,c.h又包含d.h......遂找到一份华子的C语言编程规范学习一下,并结合自己的理解写成这篇文章,以规范自己的代码。 1. 头文件嵌套的缺点 依赖:若x.h包含了y.h,则…

005_index_in_Matlab中的数组索引

Matlab中的数组索引 1. 数组相关函数 前面我们已经介绍了关于向量、数组的一些基本约定&#xff0c;已经涉及了一些数组创建和操作的规则。 函数作用备注size返回数组的大小length返回数组的最大维度ndims返回数组的维度数numel返回数组的元素个数zeros创建全零数组ones创建…

vue3项目 引入unocss原子化

unocss是一个即时的原子CSS引擎&#xff0c;它可以让你用简短的类名来控制元素的样式&#xff0c;而不需要写复杂的CSS代码。 当然&#xff0c;原子样式也有很多选择&#xff0c;最著名的就是 Tailwind。但由于Tailwind 会生成大量样式定义&#xff0c;会导致全量的 CSS 文件往…

动态规划 Leetcode 674 最长连续递增序列

最长连续递增序列 Leetcode 300 学习记录自代码随想录 要点&#xff1a;1.dp[i]定义为nums[i]结尾的连续最长递增蓄力&#xff0c;则正向遍历&#xff0c;递推时&#xff0c;如果是连续序列&#xff0c;则只比较nums[i]和nums[i-1]&#xff0c;若是可以不连续则可以&#xf…

组蛋白脱乙酰酶介导的胃癌肿瘤微环境特征及协同免疫治疗(多组学文献学习)

目录 ①HDAC转录组多数据NMF一次聚类 ②ACRG队列中HDAC单独NMF聚类 ③HDS评分在胃癌中的临床特征和基因组特征 ④高 HDS 可能提示胃癌的“热”肿瘤状态 ⑤HDS是胃癌免疫治疗效果的有力预测指标 ⑥单细胞转录组测序揭示了高HDS和低HDS患者的TME ⑦内皮细胞和成纤维细胞可…

Unity LineRenderer的基本了解

在Unity中&#xff0c;LineRenderer组件用于在场景中绘制简单的线条。它通常用于绘制轨迹、路径、激光等效果。 下面来了解下它的基本信息。 1、创建 法1&#xff1a;通过代码创建 using UnityEngine;public class CreateLineRenderer : MonoBehaviour {void Start(){// 创…

工作总结5

1.taro框架使用map标签出现的错误 这个问题困扰很长时间&#xff0c;在频繁切换页面渲染的时候出现左边不显示&#xff0c;我理解的是变量没有到达map标签的属性上&#xff0c;那我就想是不是setState太慢了&#xff0c;然后又用了变量&#xff0c;本地缓存等&#xff0c;都没有…

math模块篇(八)

文章目录 math.cosh(x)math.sinh(x)math.tanh(x) math.cosh(x) math.cosh(x) 是 Python 中 math 模块的一个函数&#xff0c;用于计算给定数值 x 的双曲余弦值。双曲余弦函数是双曲函数的一部分&#xff0c;它与普通的余弦函数有类似的性质&#xff0c;但定义在双曲空间中。 …

接口自动化框架搭建(四):pytest的使用

1&#xff0c;使用说明 网上资料比较多&#xff0c;我这边就简单写下 1&#xff0c;目录结构 2&#xff0c;test_1.py创建两条测试用例 def test_1():print(test1)def test_2():print(test2)3&#xff0c;在pycharm中执行 4&#xff0c;执行结果&#xff1a; 2&#xff0…

得物 AIGC 算法岗(日常实习生) 面经分享

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 最大的感…

Taskflow:子流任务(Subflow Tasking)

创建Subflow DAG任务中&#xff0c;有一种常见的场景&#xff0c;一个任务可能在执行期间产生新的任务&#xff0c;然后紧接着执行新任务。 之前提到的静态图就没有办法实现这样一个功能了&#xff0c;所以Taskflow提供了另一种流的节点&#xff1a;Subflow&#xff0c;Subflo…

node.js学习(2)

版权声明 以下文章为尚硅谷PDF资料&#xff0c;B站视频链接&#xff1a;【尚硅谷Node.js零基础视频教程&#xff0c;nodejs新手到高手】仅供个人学习交流使用。如涉及侵权问题&#xff0c;请立即与本人联系&#xff0c;本人将积极配合删除相关内容。感谢理解和支持&#xff0c;…

AQS的基本原理

AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是一个用于构建锁和同步器的框架&#xff0c;许多同步器都可以通过AQS很容易并且高效的构造出来。不仅Reentrant和Semaphore是基于AQS构建的&#xff0c;还包括CountDownLatch、ReentrantReadWriteLock、SynchronousQueu…

ttkbootstrap界面美化系列之Notebook(四)

在简单的界面设计中&#xff0c;Notebook也是常用的组件之一&#xff0c;Notebook组件的引入可以根据标签来切换不同的界面。使得界面更有层次感&#xff0c;不必都挤在一个界面上。在tkinter中就有Notebook组件&#xff0c;在ttkbootstrap中&#xff0c;同样也对Notebook进行了…

周末总结(2024/03/30)

工作 接受破烂现状&#xff0c;改变状态 上周一周的工作都感觉是摸鱼状态&#xff0c;每天只有三个小时左右的时间聚焦在工作上&#xff0c;其他时间都在胡思乱想。但是我发现可以在工作中学习和下班相关的技术栈。我无意改变自己的工作状态&#xff0c;只想在5月底找好下家然后…

应用侧渲染流程

应用侧渲染流程 《Android应用程序UI硬件加速渲染环境初始化过程分析》 https://blog.csdn.net/Luoshengyang/article/details/45769759 《Android HWUI绘制流程》 https://wizzie.top/android/android_HWUI_Draw/#1-gpu%E6%B8%B2%E6%9F%93%E7%A1%AC%E4%BB%B6%E5%8A%A0%E9%…

Linux+ARM 简单环境检测---软件部分

1、前言 这个是我学习linuxARM的在做的第一个软硬件结合项目&#xff0c;以往的类似这种整体类项目还是光单片机的时候&#xff0c;linux软件部分学习了差不多快一年了&#xff0c;因为各种事情耽搁&#xff0c;这个项目一直没有静下心来完成&#xff0c;不过终于哈哈哈哈搞完了…

代码随想录——移除元素(Leetcode27)

题目链接 暴力&#xff1a;&#xff08;没有改变元素相对位置&#xff09; class Solution {public int removeElement(int[] nums, int val) {int len nums.length;for(int i 0; i < len; i){if(nums[i] val){for(int j i 1; j < len; j){nums[j-1] nums[j];}i…

VS2019连接MySQL

VS2019连接MySQL 下载MySQL Connector/C配置头文件&#xff0c;库文件路径配置头文件路径配置库的路径复制dll文件 MySQL的用户设置将权限赋值给新用户 编写代码往数据库写入 老师布置的作业让我们用VS2019连接MySQL实现一个小型的日志系统&#xff0c;中间踩了很多的坑&#x…

chatui工具使用记录与比较

概述 cahtui相关工具可谓是层出不穷&#xff0c;方便了我们使用各个大模型。这里我把我知道的整理下列出来&#xff0c;顺便做一比较。 简单比较 openWebUI&#xff0c;star 11.1k&#xff0c;仿chatgpt风格&#xff0c;支持openapi、可以对接Ollama进行对话&#xff0c;功能…