Chinaunix

标题: 怎么调用这个方法 [打印本页]

作者: spibit    时间: 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 编辑 ]
作者: scutan    时间: 2007-07-20 09:46
int a(int x = 0)

改成

int a(int x)
作者: spibit    时间: 2007-07-20 09:56
问的就是有默认值,怎么调,
作者: zwylinux    时间: 2007-07-20 13:43
这个2义性应该是不能避免的吧,只能修改函数参数了。
作者: sinboyang    时间: 2007-07-20 13:48
看看函数重载是怎么一回事先吧?
作者: emacsnw    时间: 2007-07-20 14:01
你这个“重载”编译不过的。
作者: spibit    时间: 2007-07-20 14:31
这个类这么写是没问题的,因为这样是能够正常调用的:
A a;
a.a(3);

作者: spibit    时间: 2007-07-20 15:37
也就是说不能调用了?
作者: chenjn    时间: 2007-07-20 17:24
有了"int a(int x = 0",为什么你还要用"int a()"呢?你到底想干什么呀?
你要不然就单独用"int a(int x=0)"
否则就用"int a(int x)"和"int a()"
第一种用法,应该可以说包括了后面两种定义了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2