如何在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);
广告