Как передать объект функции в С++?

Может ли кто-нибудь сказать мне, как я могу передать объект функции С++?

Лучшее решение, чем мое?

#include<iostream>
using namespace std;
class abc
{
      int a;
      public:
             void input(int a1)
             {
                  a=a1;
             }
             int display()
             {
                  return(a);
             }   
};

void show(abc S)
{
    cout<<S.display();
}

int main()
{
    abc a;
    a.input(10);
    show(a);
    system("pause");
    return 0;
}

Ответ 1

Вы можете передавать по значению, по ссылке или по указателю. Ваш пример передается по значению.

Ссылка

void show(abc& S)
{
    cout<<S.display();
}

Или, еще лучше, так как вы не изменяете его, сделайте его int display() const и используйте:

void show(const abc& S)
{
    cout<<S.display();
}

Обычно это мой выбор по умолчанию для передачи объектов, поскольку он позволяет избежать копирования и не может быть NULL.

Указатель

void show(abc *S)
{
    cout<<S->display();
}

Вызов с использованием:

show(&a);

Обычно я использовал только указатель на ссылку, если я намеренно хотел, чтобы указатель был NULL.

Значение

Ваш исходный пример проходит по значению. Здесь вы фактически создаете локальную копию объекта, который вы передаете. Для больших объектов, которые могут быть медленными, а также имеет побочный эффект, что любые сделанные вами изменения будут сделаны на копии объекта, а не оригинала. Я обычно использовал только пропуск по значению, где я специально собираюсь сделать локальную копию.