c++的类模块,具体化和继承关系

2024-04-24 12:20

本文主要是介绍c++的类模块,具体化和继承关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.类模版及它的全具体化,半具体化

template<typename Tl,typename T2)
class Test{
public:
T1 m_a;
T2 m_b;
Test(T1 a,T1 b):m_a(a),m_b(b){qDebug()<< "m_a"<<m_a;}
/类模板全具体化
template<>
class Test<int,string>
{
public:
int m_a;
string m_b;
Test(int a, string b):m_a(a),m_b(b)
{qDebug()<< "m_a"<<m_a;
}
//类模板半具体化
template<typename T>
class Test<T,string>
{
public:
T m_a;
string m_b;
Test(T a, string b):m_a(a),m_b(b)
{
qDebug()<<"m_a"<<m_a;
}
}

2.模板之间的继承(3种)关系 。(照顾好基类的构造函数)

2.1模版类继承普通类

//普通类
class AA
{
public:
int m_a;
string m b;
AA(int a,string b):m_a(a),m_b(b)
{
qDebug()<<"m_a"<<this->m_a;
}	
}
//类模板继承普通类
template<typename T1,typename T2>
class Test:public AA
{
public:
T1 m_a;
T1 m_b;
Test(Tl a,Tl b,int c,string d):m_a(a),m_b(b),AA(c,d)
{
qDebug()<< "m_a"<<m_a;
}

怎么使用

int main(int argc, char *argv[])
Test<int,double> ts(7,9,3,"birdsB");

2.2普通类继承模版类

//先写模版类
template<typenameTl,typenameT2>class BB{
public:
})
Tl m_a;T2 m b;
BB(T1 a,T2 b):m_a(a),m_b(b){qDebug()<<"m_a"<<this->m_a;}//写普通类继承模版类
template<typename Tl,typename T2>class AA:public BB<T1.T2>{
public:
int m a;
string m b;
AA(int a,string b,Tl c,T2 d):m_a(a),m_b(b),BB<T1,T2>(c,d)
{
qDebug()<<"m_a"<<this->m_a;
}

使用方法

int main(int argc, char *argv[])
{
AA<int,string> a(4,"he",5,"dgf");
}

2.3类模板继承类模板

//模版类:BB
template<typenameTl,typenameT2>class BB
{
public:
Tl m_a;
T2 m b;
BB(T1 a,T2 b):m_a(a),m_b(b)
{
qDebug()<<"m_a"<<this->m_a
}
}
模版类CC继承BB
template<typename Tl,typename T2,typename T3,typename T4)
class cc:public BB<T3,T4>
{
public:
T1 m_a;
T2 m_b;
CC(T1 a,T2 b,T3 c,T4 d):m_a(a),m_b(b),BB<T3,T4>(c,d)
{
qDebug()<<"m_a"<<this->m_a;
}void show();

怎么使用

int main(int argc, char *argv[])
{
CC<int,string,double,string> a(4,"he",5.0,"dgf");
}

模版类继承模版类,成员变量类外实现

template<typename Tl,typename T2,typename T3,typename T4)void BB<T1,T2,T3,T4>::show()
{}

这篇关于c++的类模块,具体化和继承关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/931746

相关文章

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

Python模块导入的几种方法实现

《Python模块导入的几种方法实现》本文主要介绍了Python模块导入的几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录一、什么是模块?二、模块导入的基本方法1. 使用import整个模块2.使用from ... i

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function