Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++的新学习者。我想编写适用于所有数据类型的通用代码。我相信我必须在我的程序中编写名为add()的模板函数,它应该使用模板的两个参数来添加这些传递的参数并返回添加的结果。i、 e template <class T> T add (T value1, T value2){ T sum = value1+value2; return sum; } 模板 T添加(T值1,T值2){ T总和=值1+值2; 回报金额; }_C++_Templates - Fatal编程技术网

用于添加的通用模板函数 我是C++的新学习者。我想编写适用于所有数据类型的通用代码。我相信我必须在我的程序中编写名为add()的模板函数,它应该使用模板的两个参数来添加这些传递的参数并返回添加的结果。i、 e template <class T> T add (T value1, T value2){ T sum = value1+value2; return sum; } 模板 T添加(T值1,T值2){ T总和=值1+值2; 回报金额; }

用于添加的通用模板函数 我是C++的新学习者。我想编写适用于所有数据类型的通用代码。我相信我必须在我的程序中编写名为add()的模板函数,它应该使用模板的两个参数来添加这些传递的参数并返回添加的结果。i、 e template <class T> T add (T value1, T value2){ T sum = value1+value2; return sum; } 模板 T添加(T值1,T值2){ T总和=值1+值2; 回报金额; },c++,templates,C++,Templates,在main()函数中,我想为int、float和复杂类型调用模板函数add() int v1 = 5, v2 = 6 ; cout << "Addtion of int values = " << add(v1, v2); float x = 2.3, y = 3.5 ; cout << "Addtion of float values = " << add(x, y); Complex c1(2, 3), c2(2, 3), t

在main()函数中,我想为int、float和复杂类型调用模板函数add()

int v1 = 5, v2 = 6 ; 
    cout << "Addtion of int values = " << add(v1, v2);
float x = 2.3, y = 3.5 ;
    cout << "Addtion of float values = " << add(x, y);
Complex c1(2, 3), c2(2, 3), t ;
    cout << "Addtion of complex values = " << add(c1, c2);
intv1=5,v2=6;
库特
在add函数中,是否需要为每种类型编写专门的代码

不,如果该类型可以与
运算符+
一起使用,则不需要。这就是模板函数为您所做的


您需要了解模板的要点。我将逐一列出这些要点

  • 字典中的“模板”一词表示创建类似对象的预定义模式
  • 我们使用占位符类型参数定义模板函数,在您的情况下,占位符类型是T类类型参数
  • 您一定已经注意到,您不能直接调用模板函数,因为编译器不知道您定义的模板函数中的占位符类型,而是用您的参数定义替换这些占位符类型,在函数调用中提供。通过这种方式,它可以从模板创建同一函数的多种风格
  • 现在我将介绍您的代码,您只需要编写一个通用代码,因为当您使用不同的数据类型调用函数时,模板会自动创建每种类型的实例。如果必须为每种数据类型编写不同的版本,则可以重载该方法,而不是使用模板。模板的优点是它充当泛型类型函数,并且在编译器运行时会自动创建不同数据类型的实例在代码中遇到模板化函数调用。 我还想补充一点,在您的代码中,您调用了复杂类型的模板函数。模板也可以与您定义的类型一起工作,但在这里,您必须记住一件事,当您将模板与用户定义的类型一起使用时,在您的情况下,复杂类,您还必须重载模板函数中使用的必要运算符,即必须重载+运算符,否则语句复杂c1(2,3),c2(2,3),t;
    你没试过这段代码吗?那么,你在写什么?@WhozCraig我正在使用dev-c++工具,所以我不需要使用std::这取决于类型是否实现了opeartor
    ++
    。这里有一个警告:你可能不想编写任何数据类型的函数。例如,如果您在代码中使用我的库,我绝对不希望您添加意外地以意外方式修改我的类型的函数。你在代码中添加了一把猎枪-小心脚下!但是,@songyuanyao在add函数中,我需要编写什么样的代码来添加这些类型的参数呢?@roshan你已经完成了,只是
    T sum=value1+value2。你担心什么?