我是编程世界的新手。我面临着泛型函数的问题。 T max(T arg1,U arg2)功能不在程序中编译。但当我将 arg1 和 arg2 的参数更改为& agr1 和& arg2 时,程序编译没有错误。该计划如下。
#include <iostream>
using namespace std;
template <typename T>
T max (T &arg1, T &arg2) {
return (arg1 > arg2) ? arg1 : arg2;
};
int main() {
int a = 12;
int b = 24;
cout << max(a,b) << endl;
double x = 2.25;
double y = .25;
cout << max(x,y) << endl;
string w1 = "apple";
string w2 = "aardvark";
cout << max(w1,w2) << endl;
return (0);
};
我无法理解为什么这个程序没有按价值运作。 但另一个程序这个函数既可以传递值又可以引用。另一个程序如下:
#include <iostream>
using namespace std;
template <typename T, typename U>
T max (T arg1, U arg2) {
return (arg1 > arg2) ? arg1 : arg2;
};
int main() {
double num1 = 35.55;
int num2 = 130;
cout << "Max value is: " << max(num1,num2) << endl;
return (0);
};
请帮助我,并感谢您给予宝贵的时间。