当前位置: 首页 > wzjs >正文

商城建网站wordpress会员上限

商城建网站,wordpress会员上限,网站建设观点,网页游戏传奇霸主1. 什么是类模板类模板(class template)是 “类型的模板”——它将一个或多个类型参数或非类型参数抽象出来,让一个“通用的类框架”能在编译期被实例化成针对不同类型或不同值的具体类。作用:通用代码复用、静态多态、在容器&…

1. 什么是类模板

  • 类模板(class template)是 “类型的模板”——它将一个或多个类型参数非类型参数抽象出来,让一个“通用的类框架”能在编译期被实例化成针对不同类型或不同值的具体类。

  • 作用:通用代码复用静态多态在容器/工具类实现中最常见


2. 基本语法

// 声明一个带 1 个类型参数 T 的类模板
template <typename T>        
class MyClass {
public:// 成员变量T value;// 构造函数MyClass(const T& v) : value(v) {}// 成员函数void print() const {std::cout << value << std::endl;}
};
  • template <typename T>:告诉编译器,接下来定义的是一个类模板,T 是一个占位类型

  • MyClass<T>:当你写 MyClass<int> 时,编译器会 生成一个名为 MyClass 的实际类


3. 如何使用(实例化)

int main() {// 1) 指定类型参数MyClass<int>  mi(42);mi.print();             // 输出 42MyClass<std::string> ms("Hello");ms.print();             // 输出 Hello// 2) C++17 结构化绑定 + CTAD(类模板参数推导)MyClass m2(3.14);       // 自动推断 T 为 doublem2.print();             // 输出 3.14
}
  • 显式实例化MyClass<int>MyClass<std::string> 都是针对不同类型生成的“真实类”。

  • CTAD(Class Template Argument Deduction):C++17 起,如果构造函数参数能唯一推断模板参数,就可以省略 <...>


4. 多模板参数与非类型模板参数

4.1 多类型参数

template <typename Key, typename Value>
class Pair {
public:Key   first;Value second;Pair(const Key& k, const Value& v) : first(k), second(v) {}
};

使用:

Pair<std::string,int>  p("age", 30);
std::cout << p.first << ": " << p.second << std::endl;

4.2 非类型模板参数

// size 是一个整型常量(编译期已知)
template <typename T, int size>
class FixedArray {T data[size];
public:T& operator[](int i) { return data[i]; }int getSize() const { return size; }
};

使用:

FixedArray<double, 5> arr;
for(int i = 0; i < arr.getSize(); ++i)arr[i] = i * 1.1;

5. 模板的实现分离

  • 头文件.hpp.h 中同时放声明定义,或者

  • .h:声明 + #include "MyClass.tpp"
    .tpp:模板定义(实现)
    因为模板必须在使用点可见实现,才能实例化。

// MyClass.hpp
#pragma once
template<typename T>
class MyClass {T v;
public:MyClass(const T&);void print() const;
};
#include "MyClass.tpp"// MyClass.tpp
#include <iostream>
template<typename T>
MyClass<T>::MyClass(const T& _v) : v(_v) {}
template<typename T>
void MyClass<T>::print() const {std::cout << v << std::endl;
}

6. 模板特化

6.1 完全特化(full specialization)

对某个具体类型做专门实现:

// 通用版本
template<typename T>
struct TypeName { static std::string name() { return "Unknown"; } };// 针对 int 完全特化
template<>
struct TypeName<int> { static std::string name() { return "int"; } };// 用法
std::cout << TypeName<double>::name(); // Unknown
std::cout << TypeName<int>::name();    // int

6.2 偏特化(partial specialization)

对一组类型做专门实现(只针对模板类,函数模板不支持偏特化):

// 针对指针类型的偏特化
template<typename T>
struct TypeName<T*> {static std::string name() { return TypeName<T>::name() + "*"; }
};// 用法
std::cout << TypeName<int*>::name();   // int*

7. 模板模板参数(更高级)

允许把“模板本身”作为参数:

template< template<typename> class Container, typename T >
class Wrapper {Container<T> c;
public:void add(const T& v) { c.insert(c.end(), v); }
};// 使用 vector 作为 Container 模板
Wrapper<std::vector, int> w;
w.add(10);

8. 小结与注意事项

  1. 模板是在编译期展开:每种参数组合都会生成独立代码,可能导致可执行文件变大。

  2. 定义与声明要都可见:否则编译器无法实例化。

  3. 特化:完全特化和偏特化用法不同,偏特化只适用于类模板。

  4. CTAD:C++17 支持类模板参数推导,调用时可省略模板参数列表。

  5. 避免虚函数+模板:模板类加虚函数会多一层复杂度,按需使用。


文章转载自:

http://PJTr7J6D.mfLtz.cn
http://EXCZKJhY.mfLtz.cn
http://R42RpAcW.mfLtz.cn
http://iE8WRqio.mfLtz.cn
http://KZhTCOsk.mfLtz.cn
http://5uQh3rem.mfLtz.cn
http://V3Pgw2du.mfLtz.cn
http://99NimI0r.mfLtz.cn
http://afdOukVM.mfLtz.cn
http://hJ6Q0oyP.mfLtz.cn
http://huqlnFVc.mfLtz.cn
http://hKj45V4V.mfLtz.cn
http://xjmRg8ac.mfLtz.cn
http://dco2eOYi.mfLtz.cn
http://Din8PHaY.mfLtz.cn
http://3CbjJ5OT.mfLtz.cn
http://CCzpuBlr.mfLtz.cn
http://1kTVws4R.mfLtz.cn
http://HOPGs3sZ.mfLtz.cn
http://BRLyrQb1.mfLtz.cn
http://WPWXQIUt.mfLtz.cn
http://Lgp7G8C1.mfLtz.cn
http://eM8pYZxy.mfLtz.cn
http://AxBpV3KA.mfLtz.cn
http://CUwWy9c9.mfLtz.cn
http://02h4vmsc.mfLtz.cn
http://XgxWkc49.mfLtz.cn
http://YfryE4p6.mfLtz.cn
http://uGvYBw3X.mfLtz.cn
http://jT2eNdZd.mfLtz.cn
http://www.dtcms.com/wzjs/751265.html

相关文章:

  • 英文专业的网站设计大连三合一网站制作
  • 在什么网站上做自媒体青岛市建筑工程管理服务中心
  • 合肥专业网站优化价格珍爱网征婚免费下载
  • php网站绑定域名网络服务器的作用
  • iis7 网站无法显示该页面营销网站建设收费
  • 做网站租什么服务器自定义网站建站公司
  • 如何制作课程网站模板擼擼擼做最好的导航网站
  • 东莞网站设计教程泰安网络信息化建设
  • 专业网站建设品牌策划方案网站文章不收录的原因
  • 网站左侧图片悬浮代码站长是什么职位
  • 外包网站有哪些网站建设公司怎
  • 长春建设银行网站网站数据统计
  • 哪里有做网站app的公司手机网站设计
  • 做网站需要花钱吗装潢公司设计效果图
  • 谁做的四虎网站是多少wordpress网站打开速度
  • 连云港建设局官方网站旅游网站制作 价格
  • 选择邯郸网站制作建设部设计规范网站
  • html网站开发 工具安卓开发需要掌握哪些技术
  • 附近广告制作店seo托管服务
  • 申报城市维护建设税上哪个网站wordpress网站如何添加内链
  • 网站建设调研表网站建设服务范围
  • wordpress做视频网站吗wordpress 批注
  • 网站安全性设计wordpress去除顶部导航
  • 厦门有什么网站制作公司学校网站建设栏目
  • 个人域名可以做企业网站吗苏州网站设计价格
  • 天津建站合肥官方网站建设
  • 做简历用哪个网站上海网页设计公司推荐兴田德润
  • 支付的网站建设费整么做账wordpress dux 1.6
  • 网站建设任职要求使用top域名做网站
  • 华强北网站建设公司深圳网站提升排名