c++ - 通过引用传递的问题

标签 c++ pass-by-reference overloading pass-by-value

我可以重载一个采用引用名或变量名的函数吗?

例如,当我尝试这样做时:

void function(double a);
void function(double &a);

我希望这个函数的调用者能够:

double a = 2.5;
function(a); // should call function(double &a)
function(2.3); // should call function(double a)

我想编写按引用传递的函数,以便更好地使用内存并可能在范围外操作变量,但不必创建一个新变量就可以调用该函数。

这可能吗?

干杯

最佳答案

我认为您没有捕获要点。你真正应该拥有的只是这个:

void function(const double &a);

注意“常量”。这样,您应该始终获得按引用传递。如果通过引用传递非常量,那么编译器将正确地假定您希望修改传递的对象——这当然在概念上与按值传递变体不兼容。

有了 const 引用,编译器会很乐意在你背后为你创建临时对象。非 const 版本对您不起作用,因为编译器只能将这些临时对象创建为“const”对象。

关于c++ - 通过引用传递的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3227434/

相关文章:

c# - 使用头文件将 get/set 从 C# 转换为 C++

c++ - 从模板创建通用打印函数以打印原始数据类型变量的值

c++ - 将模板方法移动到派生中断编译

c++ - 了解 FTP 服务器项目的 "create a virtual filesystem which allows mapping of arbitrary directories"

c++ - 最佳编程实践,C++ header 和包含

PHP:如何修复此类型提示错误?

c++ - std::cout 不打印到控制台

c - 从 main 传递到函数时显示不同的大小

c++ - 重载解析在 gcc 和 clang 之间得到不同的结果

c++ - 在其参数结构上重载 C/C++ 预处理器宏