gpt4 book ai didi

c++ - 将变量传递给函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:37 24 4
gpt4 key购买 nike

一个简单的问题:

当我将变量传递给函数时,程序是否会复制该变量以在函数中使用?

如果是这样,而且我知道函数只会读取变量而不会写入变量,是否可以将变量传递给函数而不创建该变量的拷贝,或者我应该将其留给编译器自动为我做优化?

最佳答案

是的,按值传递的参数被复制。但是,您也可以通过引用传递变量。引用是别名,因此这使参数成为变量的别名,而不是拷贝。例如:

void foo(int x) {}
void bar(int& x) {}

int i;

foo(i); // copies i, foo works with a copy
bar(i); // aliases i, bar works directly on i

如果将其标记为 const,则您有一个只读别名:

void baz(const int&);

baz(i); // aliases i, baz reads-only i

一般来说,总是通过const-reference传递。当你需要修改别名时,去掉const。最后,当您需要拷贝时,只需按值传递即可。*

* 根据经验,基本类型(int、char* 等)和 sizeof(T) < sizeof(void*) 类型应该按值而不是常量引用传递,因为它们的大小足够小,复制比别名更快。

关于c++ - 将变量传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2969596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com