【发布时间】:2019-05-10 17:13:13
【问题描述】:
我的课堂笔记说
引用参数的参数必须是变量,而不是 常量或表达式。
因此
int f(double & var); // function prototype
...
const double t = 4.0;
int ret = f(t);
f(t) 是非法的。
但我不明白,为什么t 是非法的。 t 是一个常量,但仍然是一个变量,我认为通过引用传递 t 没有任何问题。
【问题讨论】:
-
您可以将其作为
const引用传递,如下所示:int f(const double & var); -
t不是常量,而是const变量。常数为 4.0。你的讲义基本上是在说你不能做类似int ret = f(4.0); -
@flowit 一开始我也是这么想的,但是这个例子是在一个测验解决方案中给出的,说通过
t是非法的:parameter t is defined as a constant, i.e. const, while the formal parameter is pass by reference -
它是可以传递一个常量值(比如
4.0)或const变量作为引用参数仅作为常量引用。因此,除非我误解了您的问题,否则您的讲座是不正确的(如果对于这种基本的东西不正确,我会担心)或者您错过了有关它的细节。
标签: c++ constants pass-by-reference