免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2538 | 回复: 8
打印 上一主题 下一主题

怎么调用这个方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-20 09:39 |只看该作者 |倒序浏览

  1. class A
  2. {
  3. public:
  4.         int a(int x = 0)
  5.         {
  6.                 return 0;
  7.         };
  8.        
  9.         int a()
  10.         {
  11.                 return 0;
  12.         };
  13.        
  14. };
复制代码


这里,函数重载,
假设我有
A a;
a.a(); // 编译器报错,

1,怎么调用int a(int x = 0) ?怎么调用int a() ?
2,还是不可能调用的?


这个类这么写是没问题的,因为这样是能够正常调用的:
A a;
a.a(3);


[ 本帖最后由 spibit 于 2007-7-20 14:30 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-07-20 09:46 |只看该作者
int a(int x = 0)

改成

int a(int x)

论坛徽章:
0
3 [报告]
发表于 2007-07-20 09:56 |只看该作者
问的就是有默认值,怎么调,

论坛徽章:
0
4 [报告]
发表于 2007-07-20 13:43 |只看该作者
这个2义性应该是不能避免的吧,只能修改函数参数了。

论坛徽章:
0
5 [报告]
发表于 2007-07-20 13:48 |只看该作者
看看函数重载是怎么一回事先吧?

论坛徽章:
0
6 [报告]
发表于 2007-07-20 14:01 |只看该作者
你这个“重载”编译不过的。

论坛徽章:
0
7 [报告]
发表于 2007-07-20 14:31 |只看该作者
这个类这么写是没问题的,因为这样是能够正常调用的:
A a;
a.a(3);

论坛徽章:
0
8 [报告]
发表于 2007-07-20 15:37 |只看该作者
也就是说不能调用了?

论坛徽章:
0
9 [报告]
发表于 2007-07-20 17:24 |只看该作者
有了"int a(int x = 0",为什么你还要用"int a()"呢?你到底想干什么呀?
你要不然就单独用"int a(int x=0)"
否则就用"int a(int x)"和"int a()"
第一种用法,应该可以说包括了后面两种定义了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP