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个月呢。所…

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

管理员账户功能包括&#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;专门为中国程序员服务。可以一键式部署…

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…

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

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

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

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

React Native 和 Flutter 的开发对比

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

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

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

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

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

探寻操作系统文件名字符限制的规则和历史

引言 从最早的电脑系统到现代的操作系统&#xff0c;文件命名的规则一直在不断发展&#xff0c;这些规则体现了不同操作系统设计哲学的差异。作为开发者&#xff0c;了解这些差异和背后的历史渊源非常有价值&#xff0c;本文将详细探讨Windows、macOS和Linux三大主流操作系统在…

解决 npm intasll 安装报错 Error: EPERM: operation not permitted

Node.js安装及环境配置完成之后 npm install express -g 安装全局的模块报错提示没有权限operation not permitted mkdir 错误编号4048&#xff1a; 其原因是当前用户操作该目录权限不足&#xff0c;当以管理员身份运行cmd&#xff0c;再执行npm install express -g 是不会报权…

Windows 如何选择多个文件?连续选择和间隔选择都有方法

在我们使用电脑的时候可能会遇见需要选择多个文件的情况&#xff0c;这些文件可能是连续的也有可能是间隔开的&#xff0c;这时候你知道都有哪些方法可以帮助我们进行选择吗&#xff1f;下面就分情况总结了不同的选择多个文件的方法&#xff0c;接下来就一起来看一看。 连续多…

LLM 大模型企业应用实战(-“消灭”LLM幻觉的利器

大模型在一定程度上去改变了我们生活生工作的思考的方式&#xff0c;然后也越来越多的个人还有企业在思考如何将大模型去应用到更加实际的呃生产生活中去&#xff0c;希望大语言模型能够呃有一些更多企业级别生产落地的实践&#xff0c;然后去帮助我们解决一些业务上的问题。 …

react 项目中预防xss攻击的插件 dompurify

一、安装 $ yarn add dompurify $ yarn add --dev types/dompurify 二、使用 import DOMPurify from dompurify;// 1、处理&#xff1a; DOMPurify.sanitize(htmlContent)// 2、之后放进 dangerouslySetInnerHTML dangerouslySetInnerHTML{{ __html: cleanHTML }} 如&#…

大模型提示词工程和落地思考

本文是一篇内部的个人分享&#xff08;已无敏感信息&#xff09; &#xff0c;目的是增加产品、开发同学对 LLM 的理解&#xff0c;以降低沟通中的阻力&#xff0c;更好推进落地。 以下经脱敏后的原文: 大模型并不神奇 很多人听到’大模型’这个词可能会觉得很神秘&#xff…