如何在c++中传递对象到函数

How to pass object to function in c++?

本文关键字:对象 函数 c++      更新时间:2023-10-16

谁能告诉我如何将对象传递给c++函数?

有比我的更好的解决方案吗?

#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;
}

可以通过值、引用或指针传递。你的例子是按值传递。

参考

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,我才会使用指针而不是引用。

价值

您的原始示例按值传递。在这里,您有效地创建了要传递的对象的本地副本。对于可能很慢的大型对象,它也有副作用,即您所做的任何更改都将在对象的副本上进行,而不是在原始对象上。我通常只在我特别想要本地复制的地方使用按值传递。