c++中的模板(5) -- 类模板与继承

目录

1.   父类是类模板,子类不是类模板。

代码分析: 

总结: 

2. 父类是普通类,子类是类模板。 

代码分析: 

3.  父类和子类都是类模板 

前面我们说到的类模板是在一个类中,分类内实现,类外实现和分文件写几种情况。继承是类的重要特性,所以我们需要考虑下在继承下,类模板的使用情况

在继承中,类模板也分为三种情况。 

1.   父类是类模板,子类不是类模板。

// 父类  --  是类模板
template <typename T>
class A {
public:A(int a);T getA()const;
private:T a;
};template <typename T>
A<T>::A(int a) {this->a = a;
}template <typename T>
T A<T>::getA()const {return a;
}// 子类  --  是普通的类
class B :public A<int> {
public:B(int a, int b);int getB()const;
private:int b;
};/*继承父类,在子类的构造函数处调用父类的构造函数,使用父类的构造函数,初始化继承来的属性,因为此处只调用了父类的构造函数,所以需要在调用父类构造函数时用<>传入类型参数当然在调用父类的时候,我们可以传入具体的类型参数。
*/
B::B(int a, int b):A<int>(a){  this->b = b;
}int B::getB()const {return b;
}int main(void) {A<int> a(100);B b(100,10);cout << a.getA() << endl;cout << b.getA() << endl;cout << b.getB() << endl;system("pause");return 0;
}

代码分析: 

1.   上面的代码中,父类A是一个类模板子类B是一个普通类。  

2.   子类继承,我们在:之后写上继承的父类,但是如果父类是类模板的话我们需要使用<>传入类型,来实例化父类中类型参数。  class B :public A<int> {};因为子类是普通类型,所以此处传入的是具体的类型。

3.    在继承时,使用<>传入类型参数之后,后面就可以直接使用具体的类型了而且可以不再使用<>传入类型参数。

      B::B(int a, int b):A<int>(a){  this->b = b;} ,比如此处的<int>可以不写

总结: 

1.  如果父类为类模板,子类为普通类。那么在继承的时候,需要使用<>传入类型来实例化类型参数。 

2.  前面实例化之后,后面就可写可不写了。 

2. 父类是普通类,子类是类模板。 

// 父类  --  是普通的类
class A {
public:A(int a);int getA()const;
private:int a;
};A::A(int a) {this->a = a;
}int A::getA()const {return a;
}// 子类  --  是类模板
template <typename T>
class B :public A {
public:B(int a, T b);T getB()const;
private:T b;
};template <typename T>
B<T>::B(int a, T b) :A(a) {this->b = b;
}template <typename T>
T B<T>::getB()const {return b;
}int main(void) {A a(100);B<int> b(100, 10);cout << a.getA() << endl;cout << b.getA() << endl;cout << b.getB() << endl;system("pause");return 0;
}

代码分析: 

1.  上面看在子类为类模板,父类为普通类的情况下。 和普通的继承是一样的。 

2.   对于子类,那就是模板的使用方式了。

3.  父类和子类都是类模板 

 就是将上面的两种结合起来,其实也是类似的。 

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

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

相关文章

Eclipse Version: 2023-03 (4.27.0) JDK19 Tomcat10.2

Eclipse Version: 2023-03 (4.27.0) JDK19 Tomcat10.2

【数据统计】A股累计分红率排行榜

这里的分红率是指上市以来累计现金分红/累计净利润(年度)。上市以来指的是从上市日的上一年的12月31日的财报开始计算。 例如&#xff0c;以贵州茅台为例&#xff0c;截至2024年2月16日&#xff0c;其2023年的年报还没有发布&#xff0c;最近的年报是2022年&#xff0c;咱们从…

C语言学习day15:数组强化训练

题目一&#xff1a; 称体重&#xff1a;分别给10个值&#xff0c;来获得最大值 思路&#xff1a; 定义数组&#xff0c;给数组内赋10个值第一个下标的值与第二个下标的值进行比较定义max&#xff0c;将比较得来的较大的值赋值给max一直比较直到比较到最后一个下标&#xff0…

Redis篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、缓存雪崩**二、缓存穿透三、缓存预热四、缓存更新五、缓存降级 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女…

【plt.scatter绘制散点图】:从入门到精通,只需一篇文章!【Matplotlib】

【plt.scatter绘制散点图】&#xff1a;从入门到精通&#xff0c;只需一篇文章&#xff01;【Matplotlib】&#xff01;&#x1f680; 利用Matplotlib进行数据可视化示例 &#x1f335;文章目录&#x1f335; 一、plt.scatter入门&#xff1a;轻松迈出第一步 &#x1f463;二、…

后端学习:Maven模型与Springboot框架

Maven 初识Maven Maven:是Apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具。 Maven的作用1.依赖管理2.统一项目结构3.项目构建依赖管理&#xff1a;方便快捷的管理项目依赖的资源(jar包)&#xff0c;避免版本冲突问题   当使用maven进行项目依赖…

太炸了!Sora深夜发布!网友:我要失业了

2022年末&#xff0c;OpenAI聊天机器人ChatGPT的面世无疑成为了引领人工智能浪潮的标志性事件&#xff0c;宣告了新一轮科技革命的到来。无论是聊天娱乐、教育学习&#xff0c;还是工作生产、医疗健康等领域&#xff0c;人工智能正以前所未有的速度渗透到我们生活的方方面面。 …

[NSSRound#16 Basic]Web

1.RCE但是没有完全RCE 显示md5强比较&#xff0c;然后md5_3随便传 md5_1M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&md5_2M%C9h%FF%0E%E3%5C%20%95r%D4w…

C++如何向另一个网络里的主机发送数据包

在C中&#xff0c;向另一个网络中的主机发送数据包通常涉及使用套接字&#xff08;sockets&#xff09;编程。套接字是计算机网络中的一种通信端点&#xff0c;它允许不同计算机上的程序相互通信。 以下是一个基本的步骤概述&#xff0c;描述了如何使用C和套接字向另一个网络中…

C语言习题

#include<stdio.h> int i; int main() {i--;if (i > sizeof(i)){printf(">");}else{printf("<");}return 0; } &#xff08;1&#xff09;这道题目&#xff0c;定义i作为全局变量&#xff0c;不初始化的时候&#xff0c;默认是0&#xff1…

【FPGA开发】HDMI通信协议解析及FPGA实现

本篇文章包含的内容 一、HDMI简介1.1 HDMI引脚解析1.2 HDMI工作原理1.3 DVI编码1.4 TMDS编码 二、并串转换、单端差分转换原语2.1 原语简介2.2 原语&#xff1a;IO端口组件2.3 IOB 输入输出缓冲区2.4 并转串原语OSERDESE2 笔者在这里使用的开发板是正点原子的达芬奇开发板&…

【HarmonyOS】hdc 环境变量设置

hdc&#xff08;HarmonyOS Device Connector&#xff09;是 HarmonyOS 为开发人员提供的用于调试的命令行工具&#xff0c;通过该工具可以在 windows/linux/mac 系统上与真实设备或者模拟器进行交互。 hdc 工具通过 HarmonyOS SDK 获取&#xff0c;存放于 /Huawei/Sdk/openhar…

api商城apimall实例使用指南图形验证码使用调用方法

#小李子9479# 首先&#xff0c;联系我来分配appid,ak,sk。 第二步&#xff0c;我来发sdk给您&#xff0c;因为是刚开始的项目&#xff0c;还不是太完善&#xff0c;有兴趣共同研究进步的共同测试。 1.请求 apiname: captcha/create 返回内容 { picurl:"", bsid…

简单DP算法(动态规划)

简单DP算法 算法思想例题1、01背包问题题目信息思路题解 2、摘花生题目信息思路题解 3、最长上升子序列题目信息思路题解 题目练习1、地宫取宝题目信息思路题解 2、波动数列题目信息思路题解 算法思想 从集合角度来分析DP问题 例如求最值、求个数 例题 1、01背包问题 题目…

基于requests框架实现接口自动化测试项目实战

requests库是一个常用的用于http请求的模块&#xff0c;它使用python语言编写&#xff0c;在当下python系列的接口自动化中应用广泛&#xff0c;本文将带领大家深入学习这个库&#xff0c;Python环境的安装就不在这里赘述了&#xff0c;我们直接开干。 01、requests的安装 wi…

创新技巧|迁移到 Google Analytics 4 时如何保存历史 Universal Analytics 数据

Google Universal Analytics 从 2023 年 7 月起停止收集数据&#xff08;除了付费 GA360 之外&#xff09;。它被Google Analytics 4取代。为此&#xff0c;不少用户疑惑&#xff1a;是否可以将累积&#xff08;历史&#xff09;数据从 Google Analytics Universal 传输到 Goog…

[LeetCode]-回溯-2

前言 记录 LeetCode 刷题时遇到的回溯相关题目&#xff0c;第二篇。 93. 复原 IP 地址 回溯函数 backTrack(int index,int offset) 表示从原字符串中 offset 位置开始 (包括 offset) 选数来凑出 IP 地址中第 index 个数 (index 从 0 开始) class Solution {int[] numIndex …

cudnn免登录下载

现在要下载cuDNN&#xff0c;点击下载的页面后都是出现要求先加入Nvidia developers才能进行下载&#xff0c;但这个注册的过程非常慢&#xff0c;常常卡在第二个步骤&#xff0c;这里根据亲身的经验介绍一个可以绕过这个注册或登陆步骤的方式直接下载cuDNN。遇到此类问题的可以…

智能传感器阅读笔记-智能传感器的发展历程、发展趋势及方向

智能传感器的发展历程 第一代智能传感器 第一代智能传感器是数字式传感器&#xff0c;指改造A/D转换模块&#xff0c;并采用数字技术进行信号处理&#xff0c;使输出信号为数字信号&#xff08;或数字编码&#xff09;的传感器&#xff0c;主要由放大器、A/D转换模块、微处理…

清华AutoGPT:掀起AI新浪潮,与GPT4.0一较高下

引言&#xff1a; 随着人工智能技术的飞速发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域迎来了一个又一个突破。最近&#xff0c;清华大学研发的AutoGPT成为了业界的焦点。这款AI模型以其出色的性能&#xff0c;展现了中国在AI领域的强大实力。 目录 引言&…