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