Sim*_*ker 7 c++ overloading pass-by-reference pass-by-value
我可以重载一个带引号或变量名的函数吗?
例如,当我尝试这样做时:
void function(double a);
void function(double &a);
Run Code Online (Sandbox Code Playgroud)
我希望这个函数的调用者能够做到:
double a = 2.5;
function(a); // should call function(double &a)
function(2.3); // should call function(double a)
Run Code Online (Sandbox Code Playgroud)
我想编写pass-by-reference函数以便更好地使用内存并可能在范围之外操作变量,但是不必创建新变量就可以调用该函数.
这可能吗?
干杯
我想你在这里错过了重点.你应该拥有的只是这个:
void function(const double &a);
Run Code Online (Sandbox Code Playgroud)
注意"const".有了这个,你应该总是得到传递参考.如果你有非const通过引用传递,那么编译器将正确地假设你希望修改传递的对象 - 当然这在概念上与传值的变量不兼容.
使用const引用,编译器将很乐意为您创建临时对象.非const版本不适合您,因为编译器只能将这些临时文件创建为"const"对象.
| 归档时间: |
|
| 查看次数: |
2466 次 |
| 最近记录: |