类模板函数模板从属类型

准备看个项目找实习,边看边学,一看到处都是template 和typename,好几年前学的C++都忘记光了,在这里先做个笔记复习一下。

template <class T>
T abs(T x) {if(x < 0) return -x;return x;
}
int main()
{int x = 1;cout << abs(x);return 0;
}

上面是一个函数模板的例子,注意class改成typename在这种场景是一摸一样的。

函数模板VS模板函数

上面这玩意儿叫做函数模板,这两个容易搞混,就好像豆腐一碗和一碗豆腐,我们把重点放在后面

函数模板就是模板,模板函数就是函数。

函数模板本质上是函数重载的一种实现,在定义函数模板的时候是不是有自定义类型<class T> 或者<typename T>,当上面代码中abs(x)的时候,就会生成一个模板函数,将class T变成int类型,这个生成的重载函数就叫做模板函数。

从函数模板产生的模板函数都是同名的,C++在编译的时候会将重载函数取名字

例如

void foo(int x, int y);

C 编译之后在符号库中的名字为_foo,而C++编译器会产生像_foo_int_int之类的名字,这也是C++支持重载的原因(想了解更多可以搜一下extern C)。

那么在生成这个模板函数的过程中,万一有多个同名的重载函数,编译器会按照哪一个生成呢?

答案是:非模板函数>模板函数>类型转换。https://blog.csdn.net/Slience_Perseverance/article/details/20574423


类模板:

类模板的成员函数被认为是函数模板,因此当给出一个类模板的成员函数定义必须遵循函数模板的定义。

首先看类模板格式

template <typename T>
class Array
{int size;T *p;
public:Array();Array(int n);T &operator[](int) const;
};

看上面黑体字,按照函数模板定义类成员函数

template <typename T>
Array<T>::Array()
{size = 10;p = new T[size];
}
template <typename T>
Array<T>::Array(int n)
{size = n;p = new T[size];
}
template <typename T>
T& Array<T>::operator[] (int i) const
{if(i >= 0 && i < size)return p[i];
}

这个就是对那个重载成员函数进行实现的代码。

在类模板之外定义成员函数就要按照上面这种方式。

类模板实例化

Array<int> m;
Array<int> m(5);

都是可以的,可以自行测试。


从属类型

上面的打了一遍之后就熟悉了,但是在看项目的过程中,我又发现了一种函数模板没见过的写法,

第二行开头怎么有个typename?我记得书上是没有的呀

去掉试试?

error: need ‘typename’ before ‘CTP::MakeUniqueResult<T>::scalar’ 
because ‘CTP::MakeUniqueResult<T>’ is a dependent scopeMakeUniqueResult<T>::scalar make_unique(

报错了,说这是dependent scope,必须要有这个typename,

https://blog.csdn.net/ljlinjiu/article/details/89384836?ops_request_misc=&request_id=&biz_id=102&utm_term=%E4%BB%8E%E5%B1%9E%E7%B1%BB%E5%9E%8B(dependent%20type),&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-89384836.142^v73^insert_down3,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4187

上面这篇文章写的很详细。

大概意思就是如果不指明,编译器可能会不把它当成一个类型,而把他当成一个静态成员变量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41689.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jsonpath 语法介绍

文章目录 前言 一、对jsonpath的理解 二、补充 三、哪里可以用的到呢&#xff1f; 总结 前言 在使用Python做接口测试中需要获取json中的字段值&#xff0c;因此需要使用jsonpath里面的提取规则&#xff0c;所以特意学习了jsonpath中的语法。 一、对jsonpath的理解 在线运…

如何结合均线分析伦敦金行情走势线图

伦敦金并不是普通的黄金投资产品&#xff0c;它不但拥有黄金基本的投资属性&#xff0c;还拥有高杠杆双向交易的特性&#xff0c;如果投资者只懂得怎么投资黄金&#xff0c;但没有娴熟的交易技巧和稳健的交易心态的话&#xff0c;恐怕还是难以在这个市场取得成功。 伦敦金价每天…

5.8晚间黄金行情走势分析及短线交易策略

近期有哪些消息面影响黄金走势&#xff1f;本周黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周一亚洲时段&#xff0c;现货黄金小幅反弹&#xff0c;目前交投于2024.3美元/盎司附近&#xff0c;一方面是金价上周五守住了 2000 整数关口&#xff0c;逢低买盘涌…

高胜率现货黄金走势图形

做现货黄金&#xff0c;如果投资者能成功发现市场的底部&#xff0c;收益无疑会十分可观。金价走势图中经常会见出现各种底部&#xff0c;楔形底、双底、圆弧底、头肩底….虽然是三角形的底部相对更为罕见&#xff0c;但一旦出现&#xff0c;后期的涨幅通常将会超出我们的想象&…

前十名现货黄金价格行情分析软件

很多刚接触现货黄金投资的新人&#xff0c;也许都不太了解现货黄金价格行情分析软件&#xff0c;每个不同时段中的现货黄金价格行情分析图&#xff0c;反映的是该时段的多空角力情况&#xff0c;从而了解金价大致趋向&#xff0c;由此指引投资者作出合理的交易计划&#xff0c;…

5.21下周黄金走势分析及开盘独家交易策略

近期有哪些消息面影响黄金走势&#xff1f;下周黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周五(5月19日)美市尾盘&#xff0c;现货黄金收报1977.54美元/盎司&#xff0c;大幅上升19.99美元或1.02%&#xff0c;日内最高触及1984.22美元/盎司&#xff0c;最低…

运用常用指标进行白银走势预测

银市中有许许多多的技术指标&#xff0c;这些指标都是帮助我们预测走势、完成交易的。所以&#xff0c;在白银走势预测的过程中就涉及了白银走势预测的问题。那么在白银走势预测中&#xff0c;我们常用那些指标呢&#xff1f;那些技术指标最能对我们的预测和交易结果最有帮助呢…

5.11黄金最新行情走势分析及多空交易策略

近期有哪些消息面影响黄金走势&#xff1f;本周黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;北京时间周三(5月10日)20:30&#xff0c;美国劳工部公布4月通胀报告&#xff0c;整体与核心CPI年率都走低&#xff0c;支持美联储6月份保持利率不变。数据显示&…

陶泓达:4.11黄金原油白银最新走势分析及操作策略!

黄金行情走势分析&#xff1a;   周一(4月10日)&#xff0c;国际金价一度跌约1%&#xff0c;重回2000美元干口下方。此前公布的美国3月非农就业数据显示劳动力市场吃紧&#xff0c;并提高了美联储5月再次加息的预期。金属公司MKS PAMP在一份报告中表示&#xff1a;“金价自20…

5.20下周黄金行情走势分析及开盘独家交易策略

近期有哪些消息面影响黄金走势&#xff1f;下周黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周五(5月19日)&#xff0c;现货黄金价格下跌又反弹&#xff0c;现货黄金持续走高美联储主席鲍威尔&#xff1a;那些积极的供应冲击不太可能重复出现&#xff0c;美联…

6.4下周黄金最新行情走势分析及开盘交易策略

近期有哪些消息面影响黄金走势&#xff1f;下周黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周五(6月2日)&#xff0c;美市尾盘&#xff0c;现货黄金收报1947.82美元/盎司&#xff0c;大幅下跌29.70美元或1.50%&#xff0c;日内最高触及1983.43美元/盎司&…

国际现货黄金走势图如何分析?

我们做任何的事情&#xff0c;都要有独立分析的过程。毕竟投资国际现货黄金是我们投资者自己的资金&#xff0c;最好能够自己做出判断进而去选择&#xff0c;而不是依靠外力。那么小编下面来谈谈国际现货黄金走势图如何分析的问题。 分析国际现货黄金走势图的方法无非是三个流派…

5.29今日黄金最新行情走势分析及多空交易策略

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;上周五(5月26日)美市尾盘&#xff0c;现货黄金收报1946.01美元/盎司&#xff0c;上升4.76美元或0.25%&#xff0c;日内最高触及1957.31美元/盎司&#xff0c;最低触…

陶泓达:3.27最新黄金原油白银走势分析及操作策略!

【黄金行情走势分析】 上周五&#xff0c;黄金收盘1975附近&#xff0c;周K十字阴K收盘&#xff01;在上周五的日内点评之中&#xff0c;李呈金说过&#xff0c;周五要防止下跌&#xff0c;修正&#xff0c;因此&#xff0c;持续做空思路为主。最后的修正还是走出来了。 所以&a…

现货黄金走势图怎么看?

K线走势图在现货黄金交易中非常重要&#xff0c;如果投资者看不懂K线图&#xff0c;就等同农民看不懂农民历、狙击手看不准瞄准器&#xff0c;司机握不紧方向盘。对于初学者而言&#xff0c;从零开始地自学K线知识可能有点难度&#xff0c;但如果能得到一套系统的学习方法&…

Microsoft Edge 浏览器BingChat (聊天选项)不见处理

今天打开Microsoft Edge 浏览器搜索的时候发现之前的“聊天”选项不见了&#xff0c;鼠标上滑也不出来 一开始吓了一跳&#xff08;后来学废了&#xff0c;来做个笔记&#xff09; 当时大概是这样 然后需要找回bingchat 清除浏览器cookies&#xff08; CtrlShiftDelete&…

New Bing Sorry, looks like your network settings are preventing access to this feature.

Sorry, looks like your network settings are preventing access to this feature. 解决方案&#xff1a; X-Forwarded-For 从8.8.8.8&#xff0c; 改为 1.1.1.1 参考 https://www.v2ex.com/t/924296

【英语】大学英语CET考试,口语部分2(课程笔记)

文章目录 1、口语考试介绍与备考攻略1.1 口语考试介绍1.2 考试备考攻略 2、其他补充&#xff08;考前&#xff09;2.1 一些补充2.2 口语考试培训&#xff08;重要&#xff09; 上课老师&#xff1a;金格妃 上课时间&#xff1a;4h 1、口语考试介绍与备考攻略 方法是通用的&…

介绍一个好东西:RELO, 代码分析用的

http://steeven.iteye.com/blog/370738 Eclipse Netbeans 项目管理 UML Git 介绍一个好东西&#xff1a;RELO, 代码分析用的 先说几个题外话&#xff1a; 1. 饭碗掉到马桶里面还要不要用了&#xff1f;重要的马桶里面还有新鲜的shit。偶是做软件的&#xff0c;选择了重用。…

chatgpt赋能python:Python单词怎么发音?

Python单词怎么发音&#xff1f; 如果你是一个Python编程语言爱好者&#xff0c;无论是初学者还是有10年的编程经验&#xff0c;你可能会问&#xff1a;Python单词怎么发音&#xff1f;这是一个非常常见的问题&#xff0c;如果你想在编程社区中站稳脚跟&#xff0c;理解这个问…