如何在c++中传递对象到函数
How to pass object to function in c++?
谁能告诉我如何将对象传递给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
,我才会使用指针而不是引用。
您的原始示例按值传递。在这里,您有效地创建了要传递的对象的本地副本。对于可能很慢的大型对象,它也有副作用,即您所做的任何更改都将在对象的副本上进行,而不是在原始对象上。我通常只在我特别想要本地复制的地方使用按值传递。
相关文章:
- 如何创建对象函数指针C++映射?
- 为什么我可以改变常量对象中的成员变量,这是返回常量对象函数的结果?
- 如何将对象函数的实例传递给另一个函数
- 调用模板函数的问题"No matching function for call"参数:迭代器、对象函数
- makefile对我的名称空间对象/函数/构造函数的不确定引用
- 将对象函数转换为函数指针
- 非对象函数/类函数C++
- 线程对象函数 C++
- C 将成员对象函数分配给类成员功能
- 使用基本指针调用派生对象函数
- 可以(通过编译器)使用多少个线程来初始化全局对象(函数main之前)
- C++类对象函数
- 对对象::函数的未定义引用
- 无法弄清楚将多个对象函数作为单独的线程调用的语法
- 在提升作用域出口中调用对象函数
- 使用基指针来使用派生对象函数
- 在for_each lambda 中调用对象函数
- C++:: 模板函数 - 从对象函数获取对象的地址
- Qt5 未解析的外部静态元对象函数
- 通过变量使用对象和对象函数