Curiously Recurring Template Pattern(CRTP)

news/2024/10/22 6:50:32/

Curiously Recurring Template Pattern(CRTP)是一种C++中的高级编程技巧,也被称为"奇异递归模板模式"。这种模式看起来有点反直觉,因为它涉及到一个类将自己作为模板参数传递给自己的基类。让我为您详细解释一下这个概念。


#include <iostream>// Base class template
template <class Derived>
class Animal {
public:void makeSound() {// Call the derived class's implementationstatic_cast<Derived*>(this)->sound();}
};// Derived class
class Dog : public Animal<Dog> {
public:void sound() {std::cout << "Woof!" << std::endl;}
};// Another derived class
class Cat : public Animal<Cat> {
public:void sound() {std::cout << "Meow!" << std::endl;}
};int main() {Dog dog;Cat cat;dog.makeSound(); // Outputs: Woof!cat.makeSound(); // Outputs: Meow!return 0;
}

http://www.ppmy.cn/news/1538394.html

相关文章

在电脑上免费压缩视频的 16 个视频压缩软件

正在寻找适用于 Windows 或 Mac 的最佳视频压缩器&#xff0c;让您轻松压缩 MP4、AVI、MKV、MOV 和更多类型的文件&#xff1f;无论您是通过社交媒体与朋友分享视频录制、释放手机空间&#xff0c;还是通过邮件发送长 MP4 视频&#xff0c;都必须使用付费或免费视频压缩软件来压…

高效微调理解(prompt-tuning,p-tuning v1,p-tuning v2,lora)

高效微调&#xff08;prompt-tuning&#xff0c;p-tuning v1&#xff0c;p-tuning v2&#xff0c;lora&#xff09; 1.prompt-tuning&#xff1a; 例子理解&#xff1b;保持原本模型参数不变&#xff0c;通过训练提示词的参数调整prompt&#xff0c;使其与下游任务匹配。 例子…

第六章:数据工程(6.3数据治理和建模--6.4数据仓库和数据资源)

6.3数据治理 6.3.1 元数据 数据治理是开展数据价值化活动的基础&#xff0c; 6.3.2 数据标准化 数据标准化的主要内容包括元数据标准化、数据元标准化、数据模式标准化和数据分类与编码标准化 数据标准化阶段的具体过程包括确定数据需求、制定数据标准、批准数据标准和实施…

Linux下Docker方式Jenkins安装和配置

一、下载&安装 Jenkins官方Docker仓库地址&#xff1a;https://hub.docker.com/r/jenkins/jenkins 从官网上可以看到&#xff0c;当前最新的稳定版本是 jenkins/jenkins:lts-jdk17。建议下在新的&#xff0c;后面依赖下不来 所以&#xff0c;我们这里&#xff0c;执行doc…

论文阅读笔记-Reformer: The Efficient Transformer

前言 Reformer: The Efficient Transformer 原始Transformer结构提出后&#xff0c;其中的Attention的 L 2 L^2 L2 计算复杂度以及整体模型的计算内存空间占用一直都是优化的一个方向。本篇文章提出的Reformer模型&#xff0c;通过改进Attention方式、可逆层等&#xff0c;来…

GitLab Runner 通过 Pipeline 流水线实现持续集成 CI

文章目录 1、基础环境2、安装 Docker3、安装 GitLab4、安装 JDK5、安装 Maven6、安装 GitLab Runner7、注册 GitLab Runner8、上传 GitLab9、配置 Pipeline 1、基础环境 本次演示搭建&#xff0c;我使用的是阿里云服务器&#xff0c;配置如下&#xff1a; 服务器1&#xff1a;…

SpringSecirity(四)——用户退出

因为JWT是无状态的&#xff0c;去中心化的&#xff0c;在服务器端无法清除&#xff0c;服务器一旦进行颁发&#xff0c;就只能等待自动过期 才会失效&#xff0c;所以需要redis配合才能完成登录状态的记录。 实现思路&#xff1a; 登录后在redis中添加一个白名单&#xff0c;把…

LeetCode23. 合并 K 个升序链表(2024秋季每日一题 36)

给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例 1&#xff1a; 输入&#xff1a;lists [[1,4,5],[1,3,4],[2,6]] 输出&#xff1a;[1,1,2,3,4,4,5,6] 解释&#xff1a;链表数组如下&#…