Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数模板重载_C++ - Fatal编程技术网

C++ 函数模板重载

C++ 函数模板重载,c++,C++,考虑以下程序 #include <iostream> using namespace std; int sum (int & a, int & b) { cout <<" NOn template function "<<endl; return a+b; } template <typename T> int sum ( const T & a, const T & b) { cout<<

考虑以下程序

#include <iostream>
using namespace std;

int sum (int & a, int & b)
{
  cout <<" NOn template function "<<endl;
  return a+b;
}

template <typename T>
int sum ( const T & a, const T & b)
{
  cout<<"Template Generated .."<<endl;
  return a+b;
};


int main(int argc, char ** argv)
{
  cout <<sum(10,20)<<endl;;
}
#包括
使用名称空间std;
整数和(整数和a、整数和b)
{
库特
我希望调用非模板函数的sum()

您正在传递无法绑定到非常量引用的右值。因此选择了模板版本

int&
更改为
int const&
int
,将选择第一个版本:

  • 它使用
    int常量&
  • 它使用
    int
希望有帮助

我希望调用非模板函数的sum()

您正在传递无法绑定到非常量引用的右值。因此选择了模板版本

int&
更改为
int const&
int
,将选择第一个版本:

  • 它使用
    int常量&
  • 它使用
    int

希望有帮助。

问题是
int&
无法绑定到临时版本,因此无法使用非模板版本。这与执行
int&i=10;
相同,这是不允许的

10
20
为PR值(3.10):

prvalue(“纯”右值)是不是xvalue的右值[ 示例:调用返回类型不是 引用是prvalue。文本的值,如12、7.3e5或 true也是一个prvalue。-结束示例]


问题是
int&
无法绑定到临时版本,因此无法使用非模板版本。这与执行
int&i=10;
相同,这是不允许的

10
20
为PR值(3.10):

prvalue(“纯”右值)是不是xvalue的右值[ 示例:调用返回类型不是 引用是prvalue。文本的值,如12、7.3e5或 true也是一个prvalue。-结束示例]

模板
总和(常数T&a、常数T&b)
{
cout
模板
总和(常数T&a、常数T&b)
{

谢谢杰西。回答得很好。谢谢杰西。谢谢纳瓦兹,我在等你的回答。谢谢纳瓦兹,我在等你的回答。
template <typename T>
T sum ( const T & a, const T & b)
{
  cout<<"Template Generated .."<<endl;
  return a+b;
};