C++编程(B)

63 type generator c beijing university of posts

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: t; z) { sqrt(2); // sqrt<int>(int) sqrt(2.0); // sqrt(double) sqrt(z); // sqrt<double>(complex<double>) } Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 模板函数重载规则 找出能参与这个重载解析的一组函数模板的专 门化。例如:sqrt(z)将产生候选函数 sqrt<double>(complex<double>)和 sqrt<complex<double>>(complex<dou ble>) 如果两个模板函数都可用,而其中一个比另外 一个更专门,在随后的步骤中就只考虑那个最 专门的模板函数。例:sqrt(z)意味着 sqrt<double>(complex<double>)而非 sqrt<complex<double>>(complex<dou ble>) Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 模板函数重载规则 在这组函数上做重载解析,包括那些常规函, 如果某个函数模板参数已经通过模板参数推断确 定下来,这个参数就不能再同时应用提升、标准 转换或者用户定义的转换。对于sqrt(2), sqrt<int>(int)是确切匹配,优先于 sqrt(double) 如果一个函数和一个专门化具有同样的匹配,那 么就选用函数,因此,sqrt(2.0)将选用 sqrt(double)而不是sqrt<double>(double) 如果找不到匹配或者找到多个匹配,都产生错误 Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 模板函数重载示...
View Full Document

Ask a homework question - tutors are online