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

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.xdnf.cn/news/15141.html

相关文章:

  • Redis Cluster 手动部署(小白的“升级打怪”成长之路)
  • Vue》》总结
  • 用YOLOv5系列教程(1)-用YOLOv5轻松实现设备状态智能监控!工业级教程来了
  • 11. JVM中的分代回收
  • C语言习题三
  • 玩转rhel9 Apache
  • 贪心算法题解——划分字母区间【LeetCode】
  • Tom 和 Jerry 的网格迷宫大冒险
  • 深入理解设计模式:原型模式(Prototype Pattern)
  • Spring Boot 应用中,配置的加载优先级
  • 前端MQTT入门指南:从零到实战的完整流程
  • 利用scale实现图片放大案例
  • 家用智能摄像机PRV文件删除的恢复方法
  • 设计模式 - 反转原则:DIP(Dependence Inversion Principle)最佳实践
  • 手机识别数据集,2628张原始图片,支持yolo,coco json,pasical voc xml等格式的标注
  • Nginx 中的负载均衡策略
  • TensorFlow2 study notes[1]
  • NW710NW713美光固态闪存NW719NW720
  • 【每日刷题】回文数
  • c语言中的数组IV
  • 奇哥面试:RabbitMQ工作模式深度剖析与Spring整合MQ
  • Datawhale AI夏令营:基于带货视频评论的用户洞察挑战赛上分全攻略
  • 数据库系统的基础知识(三)
  • 【时时三省】(C语言基础)通过指针引用数组元素
  • Redis 分片集群
  • C++中的智能指针(1):unique_ptr
  • 《汇编语言:基于X86处理器》第7章 整数运算(2)
  • 星云穿越与超光速飞行特效的前端实现原理与实践
  • 上位机知识篇---Linux软硬链接
  • 用 ELK+Filebeat 提高50%问题排查效率,这套方案实测有效!