再问个小问题

VIPVIPVIP 2011-03-28 02:22:07

#include <iostream>
using namespace std;
void chat(int a);
void chat(int *a);
void chat(int &a);
void main(void)
{
int x=2;
int* p=&x;
chat(x);//这样调用为什么会有错,不调用chat(int a),为什么分不清是调用chat(int a)还是chat(int &a)? //chat(*p)//也是错的,也不能调用chat(int a),原因跟上面的调用一样
cout<<"x= "<<x<<endl;
chat(p);//这里调用chat(int *a)
cout<<"x= "<<x<<endl;
chat(x);//如果没有void chat(int a),就调用void chat(int &a)这个函数,这里是个地址,第一个调用却是个值。
cout<<"a= "<<x<<endl;
}
void chat(int a)
{
a=20;
}
void chat(int *a)
{
*a=200;
}
void chat(int &a)
{
a=2000;
}
...全文
111 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2011-04-27
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
smwhotjay 2011-03-29
  • 打赏
  • 举报
回复
basic..
真相重于对错 2011-03-29
  • 打赏
  • 举报
回复
char(int&)
char(int)
编译器无法区分你具体调用哪一个函数
VIPVIPVIP 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tandyt 的回复:]
引用楼主 vipvipvip 的回复:
void main(void)
{
int x=2;
int* p=&x;
chat(x);//这样调用为什么会有错,不调用chat(int a),为什么分不清是调用chat(int a)还是chat(int &a)? //chat(*p)//也是错的,也不能调用chat(int a),原因跟上面的调用一样
cout<<"x= "……
[/Quote]

我只想知道编译时不通过的原因是什么?
kuba120 2011-03-28
  • 打赏
  • 举报
回复
这个不是重载。你看下吧
TandyT 2011-03-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 vipvipvip 的回复:]
void main(void)
{
int x=2;
int* p=&x;
chat(x);//这样调用为什么会有错,不调用chat(int a),为什么分不清是调用chat(int a)还是chat(int &a)? //chat(*p)//也是错的,也不能调用chat(int a),原因跟上面的调用一样
cout<<"x= "<<x<<endl;
chat(p);//这里调用chat(int *a)
cout<<"x= "<<x<<endl;
chat(x);//如果没有void chat(int a),就调用void chat(int &a)这个函数,这里是个地址,第一个调用却是个值。
cout<<"a= "<<x<<endl;
}
void chat(int a)
{
a=20;
}
[/Quote]


你这个函数 有用么?为什么要这样写呢?这样根本改变不了你传过来的参数的值。要么用指针要么用引用类型作为形参才能有效的修改传递过来的变量的值。
VIPVIPVIP 2011-03-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chenjelly 的回复:]
void chat(int &a);//表示引用
所以与void chat(int a);一样参数类型,只是引用参数要返回的修改后的值

你这样声明,程序调试,应该通过不了吧
[/Quote]

编译时不通过,原因是什么呢?两个函数是一样的吗? 定义重复了?
chenjelly 2011-03-28
  • 打赏
  • 举报
回复

void chat(int &a);//表示引用
所以与void chat(int a);一样参数类型,只是引用参数要返回的修改后的值

你这样声明,程序调试,应该通过不了吧
Dreadnought 2011-03-28
  • 打赏
  • 举报
回复
引用,相当于变量的别名,使用引用的好处是可以直接操作变量本身,跟指针是一个道理
shenyi0106 2011-03-28
  • 打赏
  • 举报
回复
基础问题,看看书吧
真相重于对错 2011-03-28
  • 打赏
  • 举报
回复
& 是表示引用的意思,而非地址

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧