C++变量引用的一个简单函数问题求助

来源:百度知道 编辑:UC知道 时间:2024/06/05 04:55:25
这是书上的例题,但在VC6.0里运行得不到正确结果
#include <iostream>
using namespace std;
int main()
{
void swap(int &,int &);
int i=3,j=5;
swap(i,j);
cout<<"i="<<i<<” "<<"j="<<j<<endl;
return 0;
}
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
这是利用引用形参实现两个变量值的互换,可结果还是两个数没有交换,好像这个swap函数没有起作用,为什么?
帮忙一下,谢谢

程序有误,修改如下:

#include <iostream>
using namespace std;
void swap(int &,int &); //函数声明可以放到main()函数前面,如果定义也在main()函数前面,就不用声明了

int main()
{
//void swap(int &,int &); //函数声明不应该放在这里,作用域不对
int i=3,j=5;
swap(i,j);
cout<<"i="<<i<<" "<<"j="<<j<<endl; //引号不应该用中文输入法的
return 0;
}
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}

应该是可以互换的,你试试重新编译一遍???
我在vc 9 里可以得到预期的结果。

不要把函数名定义得和使用模板的库函数的函数名相同。
swap是库函数,它就是一个模板函数,带两个参数。

我们实验一下:
#include <iostream>
using namespace std;

template <class T>
void func(T &a) {}

void main()
{
void func(int &);
func();
}
这段代码能够编译通过,明显不合理,因为func是带参数的,究竟怎么回事呢?原来VC编译器根本没有为func();这条语句生成代码。这是一条空语句。

当我们把void fun(int &);这句话去掉或者放到main之前,编译就会报错了,错误是func调用时没传参数。这却是