c++(1) 类模板/构造函数/捕获异常 实例
来源:互联网 发布:linux如何安装win7 编辑:程序博客网 时间:2024/06/01 22:10
title: c++(1) 类模板/构造函数/捕获异常 实例
tag: cpp
在一个头文件里,一般上面写模板类的声明,下面写模板类的定义
一、类模板
1.模板类的声明
template<typename TDatums, typename TWorker = std::shared_ptr<Worker<std::shared_ptr<TDatums>>>, typename TQueue = Queue<std::shared_ptr<TDatums>>> class Wrapper
2.模板类的使用
这里有三种形式参数,调用的时候传入任何一种参数即可。创建了一个类的对象,opWapper。
op::Wrapper<std::vector<op::Datum>> opWrapper;
std::vector<op::Datum>
应该属于第一种形参
3.模板函数的定义
代码中有一行调用了configue这个函数。
configure为名定义的同名函数就有四个,这四个所传入的参数个数,类型不同,因此可以重名。 opWrapper.configure(wrapperStructPose, wrapperStructFace, wrapperStructHand, wrapperStructInput, wrapperStructOutput);
二、构造函数
1.声明
explicit Wrapper(const ThreadManagerMode threadManagerMode = ThreadManagerMode::Synchronous);
2.定义
构造函数用冒号初始化一些变量
template<typename TDatums, typename TWorker, typename TQueue> Wrapper<TDatums, TWorker, TQueue>::Wrapper(const ThreadManagerMode threadManagerMode) : mThreadManagerMode{threadManagerMode}, spVideoSeek{std::make_shared<std::pair<std::atomic<bool>, std::atomic<int>>>()}, mThreadManager{threadManagerMode}, mMultiThreadEnabled{true} { try { // It cannot be directly included in the constructor, otherwise compiler error for copying std::atomic spVideoSeek->first = false; spVideoSeek->second = 0; } catch (const std::exception& e) { error(e.what(), __LINE__, __FUNCTION__, __FILE__); } }
3.析构函数
定义
template<typename TDatums, typename TWorker, typename TQueue> Wrapper<TDatums, TWorker, TQueue>::~Wrapper() {函数体}
一般的函数定义
template<typename TDatums, typename TWorker, typename TQueue>void Wrapper<TDatums, TWorker, TQueue>::disableMultiThreading(){函数体}
在类模板中,所以函数定义的时候都要加上 template<typename TDatums, typename TWorker, typename TQueue>
模板关键字
和Wrapper<TDatums, TWorker, TQueue>::
类名
三、捕获异常
try…catch 语句将能引发错误的代码放在try块中,并且对应一个响应,然后有异常被抛出。
template<typename TDatums, typename TWorker, typename TQueue> void Wrapper<TDatums, TWorker, TQueue>::configure(const WrapperStructPose& wrapperStructPose, const WrapperStructFace& wrapperStructFace, const WrapperStructInput& wrapperStructInput,const WrapperStructOutput&wrapperStructOutput) { try { configure(wrapperStructPose, wrapperStructFace, WrapperStructHand{}, wrapperStructInput, wrapperStructOutput); } catch (const std::exception& e) { error(e.what(), __LINE__, __FUNCTION__, __FILE__); } }
这个configure函数只有四个输入,但是我们看它函数体内部,其实还是指向有五个输入的那个函数,并写了一个捕获异常
阅读全文
0 0
- c++(1) 类模板/构造函数/捕获异常 实例
- C++笔记(继承,多态,虚函数,模板函数,异常捕获)
- 简单类模板实例化_默认构造函数
- C++primer学习:类模板(1):函数模板,模板参数,实例化
- Python异常捕获代码模板
- 构造方法、命名空间、String 类、继承、异常捕获
- C++——派生类的构造函数实例
- 模板中含有类的异常的捕获
- C++:模板,string类,异常
- 关于构造中new的异常捕获!
- assert函数和捕获异常
- 捕获异常消息Ctrl+C
- C++assert和捕获异常
- c++训练营--内联函数,c++类型转换,模板,异常捕获
- C/C++_log2000_函数模板与类模板笔记1
- 为类模板加上构造函数和默认构造函数
- 自定义一个异常类模板代码实例
- c++函数模板和类模板实例
- RabbitMQ原理
- 顺序表应用7:最大子段和之分治递归法
- Windows平台异常处理 开发中何时利用异常处理模块
- maven项目环境搭建
- centos7安装jdk环境
- c++(1) 类模板/构造函数/捕获异常 实例
- OSS阿里云存储——整合Spring文件上传,实现动静网站资源分离
- 浅谈单链表和顺序表
- eclipse中利用Maven逆向工程生成PO类以及mapper(mybatis)
- mysq数据库管理工具navicat基本使用方法
- Tomcat配置详解
- 分析插入与归并排序
- 贝叶斯推断简介
- 数组中只出现过一次的数字