如何在C++中向函数传递对象?


有四种方法可以将对象传递给函数。假设你有一个类X,并想将其传递给函数fun,那么:

按值传递

这会在函数作用域内创建对象的浅拷贝。在此修改的内容不会反映在传递给它的对象中。例如:

声明

void fun(X x);

调用

X x;
fun(x);

按引用传递

这将对象的引用传递给函数。在此修改的内容将反映在传递给它的对象中。不会创建对象的副本。例如:

声明

void fun(X &x);

调用

X x;
fun(x);

按const引用传递

这将对象的const引用传递给函数。你不能直接在此修改/重新赋值对象(不过你可以使用其执行此操作的方法)。如果你希望函数只有对象的只读副本,这将非常有用。不会创建对象的副本。例如:

声明

void fun(X const &x);

调用

X x;
fun(x);

按const指针传递

这将对象的const指针传递给函数。你不能在此修改/重新赋值指针。如果你希望函数只有该对象的地址在指针中,这将非常有用。不会创建对象的副本。例如:

声明

void fun(X const *x);

调用

X x;
fun(&x);

按const指针传递

这将对象的指针传递给函数。这类似于将对象的引用传递给函数。不会创建对象的副本。例如:

声明

void fun(X *x);

调用

X x;
fun(&x);

更新于:2019年7月30日

674 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告