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

建设营销型网站不足之处律所网站建设

建设营销型网站不足之处,律所网站建设,青岛做网站建设的公司哪家好,优化是什么梗函数模板(一) ● 使用 template 关键字引入模板: template void fun(T) {…} – 函数模板的声明与定义 – typename 关键字可以替换为 class ,含义相同 – 函数模板中包含了两对参数:函数形参 / 实参;模板形…

函数模板(一)
● 使用 template 关键字引入模板: template void fun(T) {…}
– 函数模板的声明与定义
– typename 关键字可以替换为 class ,含义相同
– 函数模板中包含了两对参数:函数形参 / 实参;模板形参 / 实参
● 函数模板的显式实例化: fun(3)

//函数模板的声明
template<typename T>
void fun(T);
//函数模板的再次声明
template<typename T>
void fun(T);
//函数模板的定义
template<typename T> //T为模板形参
//也可以写成template<class T>,但不能写成template<struct T>
void fun(T input) //input是函数形参
{std::cout << "template<typename T> void fun(T input): " << input << std::endl;
}
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);fun<int>(3);fun<double>(3);return a.exec();
}

在这里插入图片描述

函数模板被实例化成

#ifdef INSIGHTS_USE_TEMPLATE
template<>
void fun<int>(int input)
{std::operator<<(std::cout, "template<typename T> void fun(T input): ").operator<<(input).operator<<(std::endl);
}
#endif#ifdef INSIGHTS_USE_TEMPLATE
template<>
void fun<double>(double input)
{std::operator<<(std::cout, "template<typename T> void fun(T input): ").operator<<(input).operator<<(std::endl);
}
#endif

– 实例化会使得编译器产生相应的函数(函数模板并非函数,不能调用)
– 编译期的两阶段处理
● 模板语法检查
● 模板实例化
– 模板必须在实例化时可见 :翻译单元的一处定义原则

//header.h
#include<iostream>
template<typename T>//在source.cpp翻译单元出现了一次,在main.cpp翻译单元也出现了一次,虽然链接时产生重定义,由于模板的两阶段处理的关系,标准放松了这个限制,翻译单元级别的一处定义原则
void fun(T input)
{std::cout << "template<typename T> void fun(T input): " << input << std::endl;
}
void normalFun() //普通函数发生链接错误,在source.cpp翻译单元出现了一次,在main.cpp翻译单元也出现了一次,链接时产生重定义,程序级别的一处定义原则
{//do something
}
inline void normalFun2() //inline关键字使得程序级别的一处定义原则退化成翻译单元级别的一处定义原则
{//do something
}
//source.cpp
#include<header.h>
void g()
{fun<float>(3);
}
//main.cpp
#include<header.h>
int main(int argc, char *argv[])
{fun<int>(3);fun<double>(3);return 0;
}

– 注意与内联函数的异同

相同点:都满足翻译单元级别的一处定义原则。
异同点:函数模板的翻译单元级别的一处定义原则的原因是为了保证编译期的两阶段处理;内联函数的翻译单元级别的一处定义原则的原因是在编译期,在被调用处可以拿来展开

template<typename T>
inline void fun(T input) //和template<typename T> void fun(T input)是两个概念,inline关键字使得在调用处展开
{std::cout << "template<typename T> void fun(T input): " << input << std::endl;
}

● 函数模板的重载

template<typename T>
void fun(T input)
{std::cout << "template<typename T> void fun(T input): " << input << std::endl;
}template<typename T>
void fun(T* input) //重载1
{std::cout << "template<typename T> void fun(T* input): " << *input << std::endl;
}template<typename T, typename T2>
void fun(T input, T2 input2) //重载2
{std::cout << "template<typename T, typename T2> void fun(T input, T2 input2): " << input << input2 << std::endl;
}int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);int x = 3;fun<int>(x); //调用template<typename T> void fun(T input)fun<int>(&x); //调用template<typename T> void fun(T* input)return a.exec();
}

在这里插入图片描述
参考
深蓝学院:C++基础与深度解析

http://www.yayakq.cn/news/873652/

相关文章:

  • 如何选择赣州网站建设崇明网站建设
  • 企业网站建设的管理制度手机网站qq登录插件
  • seo整站优化什么价格注册网站查询
  • 乐清联科网站建设网站开发市场价
  • 公司网站服务器优化惠州网站营销推广
  • 不相关的网站做单项链接可以吗建设银行网站账户注销
  • 自助建站设计工作主要包括热门传奇网页游戏排行榜
  • 网站建设平台协议书前台网站系统源码
  • 如何写一个自己的网站iis添加网站
  • 手机端网站变成wap珠海建设局网站
  • 婚礼案例网站共享空间网站开发公司
  • 做哪种网站流量大ps软件免费
  • 西安php网站建设带分页的wordpress模板
  • 哈尔滨如何快速建站做企业网站一定要企业邮箱嘛
  • 在线学习平台网站建设有什么功能有哪些建设网站公司
  • 大石桥做网站东台网站建设
  • 网站主色怎么选择无锡网站建设推荐智勇
  • 网站项目开发流程图app设计尺寸规范
  • 烟台做网站企业网站建设 有限公司
  • 南京百度网站制作百姓网推广怎么收费标准
  • 松江网站建设品划网络十大免费网站推广
  • 分析建设网站的可行性分析家用机做网站服务器
  • 周口网站建设电话上海网站建设哪家做得好
  • 实用网站建设期末考试wordpress打开高级设置
  • 淮滨网站建设佛山小程序开发平台
  • 受欢迎的徐州网站建设百度官方版
  • 哪些网站可以做设计网站备案做优惠券
  • 柳州网站推广dux3.0 wordpress下载
  • 上海网站seo优化html5手机app网站模板免费下载
  • 如何在百度上搜到网站网站开发的微端