类模板的使用

2023-11-13

模板类和静态成员

#include <iostream>

using namespace std;

template <typename T>
class A {
public:
	A(T t = 0);

	T& getT();

	A operator+(const A& other);

	void print();

public:
	static int count;
private:
	T t;
};

template <typename T>
int A<T>::count = 666;

template <typename T>
A<T>::A(T t) {
	this->t = t;
}

template <typename T>
T& A<T>::getT() {
	return t;
}

template <typename T>
A<T> A<T>::operator+(const A& other) {
	A<T> tmp;
	tmp.t= this->t + other.t;
	return tmp;
}

template <typename T>
void A<T>::print() {
	cout << this->t << endl;
}

int main() {
	A<int> a(666), b(888);
	A<int> tmp = a + b;

	A<float> c(777), d(999);

	a.count = 888;

	cout << "b.count: " << b.count << endl;

	cout << "c.count: " << c.count << endl;
	cout << "d.count: " << d.count << endl;
	c.count = 1000;
	cout << "修改后, d.count: " << d.count << endl;
	
	system("pause");
	return 0;
}

vs 2019 运行结果:
在这里插入图片描述

在这里插入图片描述
总结:

  1. 从类模板实例化的每个模板类有自己的类模板数据成员,该模板类的所有对象共享一个static数据成员
  2. 和非模板类的static数据成员一样,模板类的static数据成员也应该在文件范围定义和初始化
  3. static 数据成员也可以使用虚拟类型参数T

结语:

做不到, B再多也是白搭!!!

练习 | 坚持 | 练习 | 耐得住寂寞 | 练习 | 思考 |目标 | 练习 | 超越自己

时间: 2020-09-27

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类模板的使用 的相关文章

  • 为 DocumentDb 设置自定义 json 转换器

    我正在使用类型化 DocumentQuery 从 Azure DocumentDb 集合中读取文档 from f in client CreateDocumentQuery
  • EF Core 返回 null 关系,直到直接访问

    我有一些如下所示的模型 public class Mutant public long Id get set Relations public long OriginalCodeId get set public virtual Origi
  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • 使用管道在父级和子级之间传递整数值

    我对如何正确使用 pipeline 在两个进程之间传递整数值有点困惑 在我的程序中 我首先创建一个管道 然后分叉它 我假设我有 两个 管道 据我了解 这是我的任务 我的父母通过 for 循环检查某个操作的整数值 i 增加计数变量 并将值保存
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • C++中类成员函数相互调用有什么好处?

    我是 C 新手 我发现下面的编程风格对我来说很有趣 我在这里写了一个简化版本 include
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 使用 STL 流时如何格式化我自己的对象?

    我想将我自己的对象输出到 STL 流 但具有自定义格式 我想出了这样的东西 但由于我之前从未使用过 locale 和 imbue 所以我不知道这是否有意义以及如何实现 MyFacet 和operator 所以我的问题是 这是否有意义以及如何
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • 将 AutomationID 与 ListView 结合使用

    我正在尝试将 AutomationId 附加到列表视图中的项目 理想情况下 将项目名称绑定到显示的项目
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 具有多个父项的 Qt 树模型

    我想构建一棵树 其中一个元素可以引用另一个元素 我想要构建的树是 像这样的东西 A B C D E F P this is a pointer to C D first child of C E second child of C I fo
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • C++ 中的析构函数

    我的 AB h 文件中有一个构造函数 class AB private int i public AB i 0 constructor AB i 0 destructor virtual void methodA unsigned int

随机推荐

  • maven学习笔记--常用插件(plugins)和目标(goals)

    Maven 的核心其实不做什么实际的事情 除了解析一些 XML 文档 管理生命周期与插件之外 Maven 被设计成将主要的职责委派给一组 Maven 插件 这些插件可以影响 Maven 生命周期 提供对目标的访问 绝大多数 Maven 的动
  • “阿里巴巴官方终极版Java八股文开源,Java学习利器首次揭晓!“

    铜三铁四已经结束了 但还是有很多Java程序员没有找到工作或者成功跳槽 跳槽成功的也只是从一个坑中 跳入另一个坑中 在LZ看来 真正有意义的就业与跳槽 是要进入到一个有绝对潜力的行业或者薪资能实现爆炸式增长的 这件事不容易 但也没有想象的遥
  • Word文档误删怎样恢复?6种实用方法分享给你

    如果您曾经因为没有保存微软Word文档而丢失了所有工作 那么您就会明白疼痛是多么明显 幸运的是 自从在软盘上备份文件的黑暗时代以来 Word已经走过了漫长的道路 如今 如果您丢失了未保存的Word文档 可能仍然有一种方法可以恢复它 这个过程
  • Nodejs学习

    本周我们主要学习了Nodejs相关知识 我也整理了一些相关知识点 首先呢 我们要了解Nodejs不是一门语言 也不是库 不是框架 而是一个JavaScript运行时环境 也就是说它可以解析和执行JavaScript代码 我们知道 浏览器中的
  • ARTS挑战打卡第三周

    ARTS挑战 Algorithm 一周至少一道算法题 Review 阅读并点评至少一篇英文技术文章 Tip 学习至少一个技术技巧 总结和归纳在日常工作中所遇到的知识点 Share 分享一篇有观点和思考的技术文章 01 Algorthm le
  • 输出具有n个结点的所有不同的二叉树-增强前序遍历形式输出-C++

    我们知道具有n个结点的不同的二叉树的数量是个 这是一个卡塔兰数 那么如何确定这些二叉树是什么样子的呢 下面是博主的思路 我们还知道一个入栈序列的不同出栈序列的数量也是个 于是博主就想 这不是巧了么 既然他们的数量是一样的 而且均不相同 那么
  • unity 控制物体旋转的角度

    using System Collections using System Collections Generic using UnityEngine public class Main MonoBehaviour public float
  • 为“广东数字工商”保驾护航——Apusic应用服务器在广东省工商局的应用

    互联网经济时代 信息技术的变革改变了人们传统的工作 学习 生活和娱乐方式 同时对工商部门的信息化建设提出了挑战 如何利用信息技术改进工商工作 形成新的工作方式 已成为工商系统所关心的问题 数字工商 的提出 便是其中的佐证之一 数字工商 是指
  • 从ping和ping6说起

    1 Windows中的ping ping6 发送ICMP ECHO REQUEST到网络主机 ping6是ICMPv6版的ping实现 t 不停地ping指定的主机 要查看统计信息并继续ping 按Ctl Break 要停止按Ctl C a
  • 垂直广告是什么意思_广告新趋势——内容为王 垂直细分

    广告的变革 曾经的广告投放四大媒介 电视 报纸 杂志 广播 在如今看来早已式微 除了曝光率特别高的综艺节目 影视剧 电影等大屏幕广告以外 其余资源的广告部门或者传统广告代理公司都在纷纷转型 媒体结构变革也意味着广告形式的变革 作为经历传统广
  • 如何配置Git工具

    安装Git 首先确保你已经在计算机上安装了Git 你可以从Git官方网站Git Downloads git scm com 配置用户信息 在命令行终端中 使用下面的命令来配置你的用户名和电子邮件地址 git config global us
  • 如何快速找到paper 提到算法的源码(计算机领域)??

    1 如果该算法有开源的话 首先推荐网站 https paperswithcode com 比较高效 不需要VPN 2 如果算法比较新的话 最好去作者的主页 大佬 去逛一下 3 使用Google 搜索 paper 名字 source code
  • Spring Boot注入Servlet、Filter、Listener 注解方式和使用RegistrationBean二种方式 加源码分析

    目录 Spring Boot 注入Servlet Filter Listener 官方文档 基本介绍 应用实例1 使用注解方式注入 创建 Servlet java 修改Application java 加入 ServletComponent
  • MacBook M1 安装配置conda与python3.9注意事项

    macOS 版本 1 python 3 9 才支持m1 所以需要下载3 9之上的版本 https www python org downloads macos 2 如果需要安装Anaconda 可省略单独安装python anaconda自
  • 苹果CMS V10 后台一键采集豆瓣API获取资料(最新版)

    进入苹果CMS根目录后 找到如下文件 application admin view vod info html 大约在718行左右 照图修改两处位置即可 同时列出关键代码如下 修改后一键采集入库资料示例 相关AJAX请求核心代码如下 aja
  • 元宇宙(四)人机接口

    1 VR AR MR 现在的VR AR MR一定程度上试图解决把虚拟世界 展示 给我们的问题 先不说效果如何 这个接口的也只能提供视觉和听觉信息 虽然视觉和听觉为我们提供了大部分信息量 但其它感知能力 触觉 嗅觉 味觉也虚拟世界能让我们有真
  • 华为实习生2022机考、技术面及主管面试

    第一题 第一种情况 a坐标比b坐标小 a的坐标更新为b 1 第二种情况 a坐标比b坐标大 直接加1 对于B来说也是一样 按照这个原则来更新坐标 最后返回即可 第二题 动态规划求地图障碍物的题 不同路径https leetcode cn pr
  • Linux 网络管理

    网络管理 1 网卡命名方式 1 1 网卡名称的组成格式 前两个字母标识固件 以太网卡以 en 开头 无线网卡以 wl 开头 后一个字母标识设备结构 o 主板上集成的设备的设备索引号 s 扩展槽的索引号 p s 基于拓扑的命名 如enp2s1
  • 【使用 BERT 的问答系统】第 1 章 : 自然语言处理简介

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 类模板的使用

    模板类和静态成员 include