为什么这个C ++泛型函数通过引用工作,但不是按值运行?

时间:2015-10-21 16:52:46

标签: c++

我是编程世界的新手。我面临着泛型函数的问题。 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);
};

请帮助我,并感谢您给予宝贵的时间。

0 个答案:

没有答案