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

C++类模版1

类模版作用:

  • 建立一个通用类,类中的成员,数据结构可以不具体制定,用一个虚拟的类型来代表

语法:

template<typename T>
类
#include <iostream>
using namespace std;//类模版
template<typename NameType,typename AgeType>
class Person{public://构造函数Person(NameType name,AgeType age){this->m_Name=name;this->m_Age=age;}void showPerson(){cout<<"name: "<<this->m_Name<<endl;cout<<"age: "<<this->m_Age<<endl;}//但是这两个类型是不一样的,要是这两个类型是一样的,只用一个T就够了NameType m_Name;AgeType m_Age;};void test01()
{//类模版的使用//<>表示的是模版的参数列表Person<string,int> p1("孙悟空",999);p1.showPerson();
}int main()
{test01();return 0;
}

类模版与函数模版语法相似,在声明模版template后面加类,此类称为类模版。

类模版与函数模版区别

1.类模版没有自动类型推导的使用方式

2.类模版在模版参数列表中可以有默认参数

类模版中的成员函数创建时机

  • 普通类中的成员函数一开始就可以创建
  • 类模版中的成员函数在调用时才创建
#include <iostream>
using namespace std;class Person1{public:void showPerson1(){cout<<"Person1 show"<<endl;}
};class Person2{public:void showPerson2(){cout<<"Person2 show"<<endl;}
};template <typename T>
class MyClass{public:T obj;//类模版中的成员函数void func1(){obj.showPerson1();}void showPerson2(){obj.showPerson2();}
};int main() {}

为什么这个代码跑得通,因为这两个成员函数,只要没有调用,就不会被创建的,为什么不会被创建。

#include <iostream>
using namespace std;class Person1{public:void showPerson1(){cout<<"Person1 show"<<endl;}
};class Person2{public:void showPerson2(){cout<<"Person2 show"<<endl;}
};template <typename T>
class MyClass{public:T obj;//类模版中的成员函数void func1(){obj.showPerson1();}void func2(){obj.showPerson2();}
};void test01(){MyClass<Person1> m;m.func1(); // 调用 Person1 的成员函数m.func2();}int main() {test01();return 0;}

但是下面这个就会出错。

总结:类模版中的成员函数并不是一开始就创建的,在调用时才创建。

http://www.lryc.cn/news/586382.html

相关文章:

  • HTTP和HTTPS部分知识点
  • JAVA开发
  • 【数据结构初阶】--顺序表(三)
  • 广东省省考备考(第四十三天7.12)——数量(第四节课)
  • kettle从入门到精通 第101课 ETL之kettle DolphinScheduler调度kettle
  • 亚矩阵云手机:重构物流供应链,让跨境包裹“飞”得更快更准
  • 配置驱动开发:初探零代码构建嵌入式软件配置工具
  • ESP32使用freertos更新lvgl控件内容
  • TDengine 使用最佳实践(1)
  • Cell2location maps fine-grained cell types in spatial transcriptomics 文章解析
  • 全局唯一id生成
  • JavaScript加强篇——第七章 浏览器对象与存储要点
  • 深度学习-卷积化
  • 深入详解:决策树在医学影像领域心脏疾病诊断的应用及实现细节
  • Vue框架之钩子函数详解
  • ngrok使用
  • 企业商业秘密保卫战:经营信息类案件维权全攻略
  • 第三章第三节 GPIO 输入
  • Unity开发中常用的洗牌算法
  • 程序改错---字符串
  • 【离线数仓项目】——电商域DIM层开发实战
  • [特殊字符] 实时数据洪流突围战:Flink+Paimon实现毫秒级分析的架构革命(附压测报告)——日均百亿级数据处理成本降低60%的工业级方案
  • Spring Boot 2.4+中bootstrap.yml加载顺序的源码深度解析
  • 北京高铁3h可达城市周末游攻略
  • 堆内存的详细结构以及java中内存溢出和排查方式
  • 大模型量化相关
  • 钉钉企业应用开发实战:从零构建组织级业务工具
  • cuDNN 的 IMPLICIT_GEMM 算法
  • bp使用爆破模块破解pikachu的登陆密码
  • C++11之emplace