c++ 引用参数如何设默认值

来源:百度知道 编辑:UC知道 时间:2024/06/20 08:07:39
比如
void fun(int & i = 0 );
//提示错误 问:该怎么给这个i设默认值为0?

我想说的是楼主知不知道引用的目的呢?
引用的目的通常是为了节约实参传递给函数时,构造形参的开销(类对象的构造成本),而INT是内建型别,值传递和引用传递的开销是一样的。

楼主的想法大概是想在调用函数且缺省参数时i的值为0,而现在的写法我认为编译器会认为是将int型别的引用设置为空,即引用不指向任何已存在的int变量。就好想将指针的内容设置为0和将指针设置为NULL的区别一样。
而将引用设置为空的操作:
int *i = NULL;
int &x = *i;
但这样的操作是应被避免的,引用就必须指向一个已存在的对象。
所以会有错误提示。
要实现楼主的想法完全不必使用引用的,我想是这样的吧,还请高手们继续指点。

你这个参数i是引用类型,引用类型变量的初值需要该类型的一个变量,而且赋值之后不能改变
例如
int &a;
int b;
a=b
使用a就相当于使用b,a的值变了,b的值跟着变。

至于怎么i的默认值为0,确实需要高人回答下

这个地方我测试过了,我的这个写法是成功的。
1 #include <stdio.h>
2 int bb = 10;
3 void fun(int &a=bb);
4
5 int main(void)
6 {
7 printf("Hello World!");
8 fun();
9
10 return 0;
11 }
12
13 void fun(int &a)
14 {
15 printf("%d\n", a);
16
17 return;
18 }