C ++如何使用pass by value重载方法并通过引用传递

时间:2012-12-13 20:27:45

标签: c++ overloading

如何进行以下重载工作

#include <iostream>

using namespace std;

int subtractFive (int a)
{
    a = a - 5;

    return a;
}

int subtractFive (int &a)
{
    a = a -5;

    return a -5;
}

int main()
{
    int A = 10;

    cout << "Answer: " << subtractFive(*A) << endl;
    cout << "A Value "<< A << endl;

    cout << "Answer: " << subtractFive(A) << endl;
    cout << "A Value "<< A << endl;

    return 0;
}

尝试但没有编译

    #include <iostream>

using namespace std;

int subtractFive (int a)
{
    a = a - 5;

    return a;
}

void subtractFive (int* a)
{
    *a = *a -5;
}

int main()
{
    int A = 10;

    cout << "Answer: " << subtractFive(A) << endl;
    cout << "A Value "<< A << endl;

    subtractFive(A);
    cout << "A Value "<< A << endl;

    return 0;
}

3 个答案:

答案 0 :(得分:0)

您可以尝试指定将地址作为参数的重载:

int subtractFive (int *a)
{
    *a = *a -5;

    return *a -5;
}

答案 1 :(得分:0)

将一个函数声明为地址,另一个按值或引用:

void subtractByFive(int * p_value)
{
    if (p_value != NULL)
    {
       *p_value -= 5;
    }
    return;
}

答案 2 :(得分:0)

值和引用具有相同的类型,因此您不能在其上重载。如果你想要两个函数,其中一个函数修改它的参数,另一个函数返回新值,那么你要么必须给它们不同的名称或不同的类型(例如,让后一个函数使用指针类型)。