QT c++函数模板与类模板的使用

QT c++类模板的使用

#pragma once#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication5.h"class QtWidgetsApplication5 : public QMainWindow
{Q_OBJECTpublic:QtWidgetsApplication5(QWidget *parent = nullptr);~QtWidgetsApplication5();template <typename T>T getMax(T x, T y); //函数模板template <class T>class Txx //类模板{private:T name;public:Txx(T n) :name(n){}T getName(){return name;}};private:Ui::QtWidgetsApplication5Class ui;
};

函数模板实现: 

 

#include "QtWidgetsApplication5.h"
#include "Dll3.h"
#pragma comment (lib,"Dll3.lib")
#include <qmessagebox.h>
#pragma execution_character_set("utf-8")
#include <qdebug.h>QtWidgetsApplication5::QtWidgetsApplication5(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);this->setWindowIcon(QIcon(":/imgs/multi.ico"));int aa= MathFunc::fnAdd(1,2);// QMessageBox::information(this,"title","加法结果:"+QString::number(aa));int aa2 = MathFunc::fnSub(9, 2);// QMessageBox::information(this, "title", "减法结果:" + QString::number(aa2));connect(ui.pushButton_getMax, &QPushButton::clicked, this, [=] {qDebug() << "max value is: " << getMax(3, 2);qDebug() << "max value is: " << getMax(3.3, 2.3);Txx<int> txx(666);//Txx tt2(777);qDebug() << "age value is: " << txx.getName();});
}
template<typename T>inline T QtWidgetsApplication5::getMax(T x, T y)
{return x > y ? x : y;
}QtWidgetsApplication5::~QtWidgetsApplication5()
{}

 Txx为类模板的调用。Txx<int >可以正常调用,Txx tt2(777)这样使用时报错,

因为类的模板参数推导仅在 C++17 之后可用

属性中设置即可

 

C + + 中函数重载和模板之间的区别

在了解 C + + 中的函数重载和模板之间的区别之前,首先要知道 C + + 中的多态性是什么。

多态性意味着具有多种形式。多态性是面向对象编程的一个重要概念。可以将多态性定义为函数或消息以多种形式显示的能力。

C + + 中的函数重载和模板都是 C + + 中多态性的示例,即静态多态。当需要定义执行类似操作的多个函数时,应该使用函数重载。另一方面,当需要定义执行相同操作的多个函数时,应该在 C + + 中使用模板。

C + + 中的函数重载和模板之间最重要的区别之一是模板不能接受不同数量的参数,但重载函数可以接受不同数量的参数

应用:

函数模板:参数个数相同,类型不同,功能相同(如:用于比较)

函数重载:参数个数不同,类型不同,功能不同

 

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

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

相关文章

Arthas实战(4)- 线程死锁问题排查

一、 准备测试应用 新建一个 SpringBoot应用&#xff0c;写一段线程死锁的代码&#xff1a; GetMapping("/threadLock") public void threadLock() {Thread thread1 new Thread(() -> {synchronized (resource1) {System.out.println(Thread.currentThread().g…

Solution

(解决方案)可行性研究报告暨设计方案-zengwenfeng.doc 基本上都要300-500多页&#xff0c;大型【纯软件】&#xff0c;县级0-200万&#xff0c;市级项目500-1500万不等&#xff0c;省部级1000-10000万不等都有。本例为过往已完成项目案例目录结构。搞方案都要准备1-3个月呢。所…

go语言 类型和常量

go语言 类型和常量 一、基础类型 Go语言是一种静态类型语言&#xff0c;这意味着所有变量的类型在编译时必须明确&#xff0c;并且一旦定义&#xff0c;类型就不能改变。 1.数字类型 整数类型 int8&#xff1a;占1个字节&#xff0c;范围是-128到127。int16&#xff1a;占2…

房屋租赁管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;中介管理&#xff0c;房屋信息管理&#xff0c;房屋类型管理&#xff0c;租房订单管理&#xff0c;租房信息管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;房屋信息&a…

极狐GitLab 将亮相2024空天信息大会暨数字地球生态峰会,携手中科星图赋能空天行业开发者

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff1a;https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署…

测试类型介绍-功能测试入门指南

1. 功能测试定义​ 功能测试&#xff0c;作为软件质量保证的关键环节&#xff0c;专注于验证软件是否按预期执行其指定功能。它直接面向用户需求&#xff0c;确保每一个功能点都能正确无误地工作。简而言之&#xff0c;功能测试是检查软件功能是否符合设计规范的过程。 2. 为…

Django文档简化版——Django快速入门——创建一个基本的投票应用程序

Django快速入门——创建一个基本的投票应用程序 准备工作1、创建虚拟环境2、安装django 1、请求和响应&#xff08;1&#xff09;创建项目&#xff08;2&#xff09;用于开发的简易服务器&#xff08;3&#xff09;创建投票应用&#xff08;4&#xff09;编写第一个视图1、编写…

Qualcomm QCA206x EasyMesh For Ubuntu

1. 引言 关于EasyMesh概念我们这里就不再过多的赘述&#xff0c;此篇文档的目的是&#xff0c;让广大初学者&#xff0c;有一个很方便的平台进行EasyMesh的学习和测试。 2. X86 Ubuntu平台 2.1 硬件环境准备 备注&#xff1a;QCA206x WiFi module推荐使用移远的FC64E/FC66E。…

Mysql笔记-v2【7月5日更新】

零、 help、\h、? 调出帮助 mysql> \hFor information about MySQL products and services, visit:http://www.mysql.com/ For developer information, including the MySQL Reference Manual, visit:http://dev.mysql.com/ To buy MySQL Enterprise support, training, …

详解yolov5的网络结构

转载自文章 网络结构图&#xff08;简易版和详细版&#xff09; 此图是博主的老师&#xff0c;杜老师的图 网络框架介绍 前言&#xff1a; YOLOv5是一种基于轻量级卷积神经网络&#xff08;CNN&#xff09;的目标检测算法&#xff0c;整体可以分为三个部分&#xff0c; ba…

第十节:学习ConfigurationProperties类来配置pojo实体类参数(自学Spring boot 3.x的第二天)

大家好&#xff0c;我是网创有方 。这节记录下如何使用ConfigurationProperties来实现自动注入配置值。。实现将配置文件里的application.properties的参数赋值给实体类并且打印出来。 第一步&#xff1a;新建一个实体类WechatConfig package cn.wcyf.wcai.config;import org…

BAT批处理运行项目

BAT批处理运行项目 1. 批处理简介 顾名思义&#xff0c;批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件&#xff0c;其扩展名为BAT或者CMD。这些命令统称批处理命令。 2. 编写启动zookeeper脚本 echo off call "D:\Program Files\zookeeper-3.4.10\…

GISSERVER 管理器如何发布自定义地图网站

GISSERVER 管理器可以发布我们自己的地图网站&#xff0c;那么如何通过编程或自动生成的方式生成一个地图页面并将其用GISSERVER 管理器发布出来呢&#xff1f;在看本章之前希望您能了解一下WEBGIS的基本架构情况&#xff0c;对您理解本章内容及WEBGIS基本原理很有帮助&#xf…

由俭入奢易,由奢入俭难

由俭入奢易&#xff0c;由奢入俭难。这是古人的良言&#xff0c;又像是告诫后来人要居安思危&#xff0c;不要忘记了艰难的时候。从简朴、节约的生活方式转变为奢侈、挥霍的生活方式相对容易&#xff0c;但一旦习惯了奢侈的生活&#xff0c;再想要回到简朴的生活就十分困难了。…

java花店管理系统eclipse开发mysql数据库

1 绪论 1.1 系统开发目的 随着人们物质生活水平和经济水平的不断提高&#xff0c;室内绿化布置、家庭园艺装饰、礼仪鲜花等日益受到重视和青睐&#xff0c;以及送鲜花给亲朋好友来表达自己的情谊。传统的花店对于信息的管理的主要方式是基于文本、表格等纸质手工处理&#xf…

React Native 和 Flutter 的开发对比

React Native (RN) 和 Flutter 都是用于构建跨平台移动应用程序的流行框架。两者都具有各自的优势和劣势&#xff0c;选择哪个框架取决于您的具体需求和项目。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 以下是一些 RN 和 Flutter…

【MySQL】SQL中的DROP、DELETE和TRUNCATE的区别

文章目录 前言一、DROP、DELETE和TRUNCATE的区别区别二、总结 前言 在使用SQL进行数据库操作时&#xff0c;我们经常需要删除数据。SQL提供了几种不同的命令来完成这个任务&#xff0c;包括DROP、DELETE和TRUNCATE。虽然这三个命令都可以用来移除数据&#xff0c;但它们的行为…

企业搭建知识库:解锁无限潜力的钥匙

在当今这个信息爆炸的时代&#xff0c;企业如何高效地管理、传播与利用知识&#xff0c;已成为衡量其竞争力的重要标尺。知识库&#xff0c;作为这一背景下的产物&#xff0c;正逐步成为企业不可或缺的数字资产。它不仅是一个自助式的数字门户&#xff0c;更是连接员工、客户与…

【产品经理】订单处理12-订单的取消与反取消

在电商ERP系统中&#xff0c;订单取消与反取消也是常见功能之一。 订单取消与反取消也是电商ERP系统的常见功能&#xff0c;本次主要讲解下订单取消与反取消的逻辑。 一、订单取消 在电商ERP系统中&#xff0c;订单取消一般由审单员操作&#xff0c;此类取消一般是由于上下游…

jcmd命令笔记

文章目录 GC.class_statsjcmd 25274 Thread.printjcmd 25274 GC.run 其他文档(命令行) jcmd是一款命令行工具&#xff0c;可以监控jvm虚拟机性能和诊断问题。 GC.class_stats 如果报错&#xff1a; GC.class_stats command requires -XX:UnlockDiagnosticVMOptions 在启动脚本…