C++类模板学习

news2024/11/22 18:39:49

之前已经学习了函数模板,在这里,

C++函数模板Demo - win32 版_c++编写的opc da demo_bcbobo21cn的博客-CSDN博客

下面学习类模板;

VC6;

做一个星星类,Star;

Star.h;

#if !defined(AFX_STAR_H__97C0823A_2BCE_4D95_998D_D8C8D1A56308__INCLUDED_)
#define AFX_STAR_H__97C0823A_2BCE_4D95_998D_D8C8D1A56308__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

template<class T1, class T2>

class Star{

public:
    Star(T1 a, T2 b): size(a), light(b){ }
public:
    T1 getsize() const;  //获取大小
    void setsize(T1 a);  //设置大小
    T2 getlight() const;  //获取亮度
    void setlight(T2 b);  //设置亮度

private:
    T1 size;  //大小
    T2 light;  //亮度
};

template<class T1, class T2>  //模板头
T1 Star<T1, T2>::getsize() const /*函数头*/ {
    return size;
}

template<class T1, class T2>
void Star<T1, T2>::setsize(T1 a){
    size = a;
}

template<class T1, class T2>
T2 Star<T1, T2>::getlight() const{
    return light;
}

template<class T1, class T2>
void Star<T1, T2>::setlight(T2 b){
    light = b;
}

#endif // !defined(AFX_STAR_H__97C0823A_2BCE_4D95_998D_D8C8D1A56308__INCLUDED_)

OnDraw()函数中调用,

void CMystarView::OnDraw(CDC* pDC)
{
	CMystarDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	CString str1;

	Star<int, int> star1(10, 20);
	str1.Format("星星大小:%d,星星亮度:%d", star1.getsize(), star1.getlight());
	pDC->TextOut(50, 50, str1);

    Star<int, char*> star2(100, "180度");
    str1.Format("星星大小:%d,星星亮度:%s", star2.getsize(), star2.getlight());
	pDC->TextOut(50, 80, str1);

    Star<char*, char*> star3("六", "二十一度");
    str1.Format("星星大小:%s,星星亮度:%s", star3.getsize(), star3.getlight());
	pDC->TextOut(50, 110, str1);

	Star<double, double> star4(5.5, 97.5);
    str1.Format("星星大小:%f,星星亮度:%f", star4.getsize(), star4.getlight());
	pDC->TextOut(50, 140, str1);
}

运行如下;

 

 

 有时候把几个成员函数单独放到Star.cpp里,在VC环境会报链接错误,一时还没明白;下回继续;

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

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

相关文章

(十二)VBA常用基础知识:worksheet的各种操作之sheet移动

当前sheet确认 把sheet1移动到sheet3前边 Sub Hello()10Worksheets("Sheet1").Move Before:Worksheets("Sheet3") End Sub3. 把sheet2移动到sheet1后边 Sub Hello()11Worksheets("Sheet2").Move after:Worksheets("Sheet1") End Sub…

MissionPlanner编译过程

环境 windows 10 mission planner 1.3.80 visual studio 2022 git 2.22.0 下载源码 (已配置git和ssh) 从github上克隆源码 git clone gitgithub.com:ArduPilot/MissionPlanner.git进入根目录 cd MissionPlanner在根目录下的ExtLibs文件下是链接的其它github源码&#xff0…

pymysql简介以及安装

视频版教程 Python操作Mysql数据库之pymysql模块技术 前面基础课程介绍了使用文件来保存数据&#xff0c;这种方式虽然简单、易用&#xff0c;但只适用于保存一些格式简单、数据量不太大的数据。对于数据量巨大且具有复杂关系的数据&#xff0c;当然还是推荐使用数据库进行保存…

79、SpringBoot 整合 R2DBC --- R2DBC 就是 JDBC 的 反应式版本, R2DBC 是 JDBC 的升级版。

★ 何谓R2DBC R2DBC 就是 JDBC 的 反应式版本&#xff0c; R2DBC 是 JDBC 的升级版。 R2DBC 是 Reactive Relational Database Connectivity (关系型数据库的响应式连接) 的缩写 反应式的就是类似于消息发布者和订阅者&#xff0c;有消息就进行推送。R2DBC中DAO接口中方法的…

Rust vs C++ 深度比较

Rust由于其强大的安全性受到大量关注&#xff0c;被认为C在系统编程领域最强大的挑战者。本文从语言、框架等方面比较了两者的优缺点。原文: Rust vs C: An in-depth language comparison Rust和C的比较是开发人员最近的热门话题&#xff0c;两者之间有许多相似之处&#xff0c…

Linux复习-安装与熟悉环境(一)

这里写目录标题 虚拟机ubuntu系统配置镜像Linux命令vi编辑器3个模式光标命令vi模式切换命令vi拷贝与粘贴命令vi保存和退出命令vi的查找命令vi替换命令 末行模式复制、粘贴、剪切gcc编译器 虚拟机 VMware16 官网下载&#xff1a;vmware官网 网盘下载&#xff1a; 链接&#xff…

共享文件夹设置密码怎么做?3招轻松为文件上锁!

“我们小组里建了一个共享文件夹&#xff0c;为了安全起见&#xff0c;想给文件夹设置一个密码&#xff0c;但是不知道应该怎么操作&#xff0c;有没有大佬可以教教我呀&#xff01;” 在我们的工作中&#xff0c;经常都会用到共享文件&#xff0c;这样可以让我们的工作方便快捷…

Jmeter接口测试

前言&#xff1a; 本文主要针对http接口进行测试&#xff0c;使用Jmeter工具实现。 Jmter工具设计之初是用于做性能测试的&#xff0c;它在实现对各种接口的调用方面已经做的比较成熟&#xff0c;因此&#xff0c;本次直接使用Jmeter工具来完成对Http接口的测试。 1.介绍什么是…

负载均衡技术全景:理论、实践与案例研究

在当今的互联网时代&#xff0c;随着用户数量的增长和业务规模的扩大&#xff0c;单一的服务器已经无法满足高并发、大流量的需求。为了解决这个问题&#xff0c;负载均衡技术应运而生。负载均衡可以将大量的网络请求分发到多个服务器上进行处理&#xff0c;从而提高系统的处理…

Qt-双链表的插入及排序

输入一个二维链表将其排序后转化成一维链表 要求&#xff1a;链表自定义不得使用模板库 链接&#xff1a;私信

Spring Cloud Gateway快速入门(一)——网关简介

文章目录 前言一、什么是网关1.1 gateway的特点1.2 为什么要使用gateway 二、使用 Nginx 实现网关服务什么是网关服务&#xff1f;为什么选择 Nginx 作为网关服务&#xff1f;如何使用 Nginx 实现网关服务&#xff1f;1. 安装 Nginx2. 配置 Nginx3. 启动 Nginx4. 测试网关服务 …

八大排序(二)快速排序

一、快速排序的思想 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右…

RK3568平台开发系列讲解(工具命令篇)ADB的安装

🚀返回专栏总目录 文章目录 一、ADB介绍二、Windows 下安装 adb 工具沉淀、分享、成长,让自己和他人都能有所收获!😄 一、ADB介绍 adb 全称 Android Debug Bridge,直译过来就是 Android 调试桥,它是一个通用的命令行工具。adb 做为 Android 设备与 PC 端连接的一个桥梁…

软件设计模式系列之十四——代理模式

1 模式的定义 代理模式是一种结构型设计模式&#xff0c;它允许一个对象&#xff08;代理&#xff09;充当另一个对象的接口&#xff0c;以控制对该对象的访问。代理模式通常用于控制对真实对象的访问&#xff0c;以实现一些额外的功能&#xff0c;例如延迟加载、权限控制、日…

ORM模型与表的映射

ORM模型与表的映射 ORM模型 对象关系映射(ObjectRelationship:Mapping)&#xff0c;简称 ORM&#xff0c;是一种可以用 Python 面向对象的方式来操作关系型数据库的技术&#xff0c;具有可以映射到数据库表能力的 Python 类我们称之为 ORM 模型。一个 ORM 模型与数据库中一个…

基于SpringBoot的的师生健康信息管理系统

目录 前言 一、技术栈 二、系统功能介绍 管理员功能模块 学生功能模块 教师功能模块 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着移动应用技术的发展&#xff0c;越来越多的用户借助于移动手机、电脑完成生活中的事务&#xff0c;许多的传统行业也…

华为NFC设置教程(门禁卡/公交卡/校园卡等)

今天把华为NFC设置教程分享给大家 出门带门禁卡、校园卡、银行卡、身份证……东西又多&#xff0c;携带又麻烦&#xff0c;还容易搞丢&#xff0c;有没有一种方法可以把它们都装下&#xff1f;有&#xff01;只要一部手机&#xff0c;出门不带卡包&#xff0c;各种证件&#x…

SpringCloud Alibaba 入门到精通 - Sentinel

SpringCloud Alibaba 入门到精通 - Sentinel 一、基础结构搭建1.父工程创建2.子工程创建 二、Sentinel的整合SpringCloud1.微服务可能存在的问题2.SpringCloud集成Sentinel搭建Dashboard3 SpringCloud 整合Sentinel 三、服务降级1 服务降级-Sentinel2 Sentinel 整合 OpenFeign3…

算法之斐波那契数列

10.1 斐波那契数列 题目链接 牛客网 题目描述 求斐波那契数列的第 n 项&#xff0c;n < 39。 解题思路 如果使用递归求解&#xff0c;会重复计算一些子问题。例如&#xff0c;计算 f(4) 需要计算 f(3) 和 f(2)&#xff0c;计算 f(3) 需要计算 f(2) 和 f(1)&#xff0c;…

好物周刊#9:AI 学习必备资料

村雨遥的好物周刊&#xff0c;记录每周看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;每周五发布。 一、项目 1. PicX 一款基于 GitHub API 开发的图床工具&#xff0c;提供图片上传托管、生成图片链接和常用图片工具箱服务。只需要申请一个 Github Token&am…