免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: inet_addr
打印 上一主题 下一主题

[c++] 多态性与递归函数 [复制链接]

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
11 [报告]
发表于 2012-07-11 12:57 |只看该作者
回复 9# www1862


    you have a poor teacher... amen



论坛徽章:
0
12 [报告]
发表于 2012-07-11 13:06 |只看该作者
类都没有,玩鸟蛋的多态啊!

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
13 [报告]
发表于 2012-07-11 14:25 |只看该作者
回复 6# inet_addr

inet_addr 发表于 2012-07-11 10:04
   a: void insertOne(char *)
   b: void insertOne(char *, int)
a调用b

insertOne(char* k) { return insertOne(k, strlen(k)); }

inet_addr 发表于 2012-07-11 10:04
      c: void insertOne(Tree *, char *, int)
      d: insertOne(Tree *, char *)

      问题是:想用d调用c


insertOne(Tree* t, char* k) { return insertOne(t, k, strlen(k)); }
有什么区别?


inet_addr 发表于 2012-07-11 10:04
随手写的代码, 大家别介意,表达意思而已

随手写的代码,错误一大堆,而且还不是手误那种小错误,还怎能表达意思?又怎能不介意?

void insertOne(Tree *tree, char *key, int)
...
        tree = new node(key);
...

能看懂我为什么要把这两行抓出来的人,都应该都看不懂你写这代码是打算做什么。

你知道下面的事实吗?

  1. void f(int* x) { x = new int(12); };
  2. int* p = 0;
  3. int* original = p;
  4. f(p);
  5. assert(p == original);
复制代码
f(p) 不能改变外部的p。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
14 [报告]
发表于 2012-07-11 14:29 |只看该作者
folklore 发表于 2012-07-11 12:57
回复 9# www1862

I agree with you. Could you introduce some books for me?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
15 [报告]
发表于 2012-07-11 14:32 |只看该作者
回复 1# inet_addr

至于这个叫不叫多态,是有分歧的。
Haskell社区认为重载是一种多态。
而C++社区有认为它是的,并冠上静多态以与virtual那种相区别。也有认为它不是多态的。

但无论怎样,不把这个叫重载的社区或人应该不多。
如果一开始就用重载这术语,引起的误会会更少。

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
16 [报告]
发表于 2012-07-11 14:34 |只看该作者
回复 14# www1862


    unfortunatly, i am not read any book now.and can't give you any advise. just try to use google, and it may be enought to resolve at most any promble.

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
17 [报告]
发表于 2012-07-11 14:37 |只看该作者
本帖最后由 www1862 于 2012-07-11 14:41 编辑
lifcu3 发表于 2012-07-11 12:35
回复 9# www1862
重载不是多态
覆盖也不是多态
为什么网上很多人都说 覆盖是多态?函数重载叫编译时多态,成员函数的覆盖称为运行时多态。so i'm confused!

论坛徽章:
0
18 [报告]
发表于 2012-07-12 10:52 |只看该作者
覆盖和重载说白了是多个函数,虽然它们的函数名相同,但并不是同一个函数

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
19 [报告]
发表于 2012-07-13 11:10 |只看该作者
不知所云何事。

论坛徽章:
0
20 [报告]
发表于 2012-07-13 14:23 |只看该作者
多态就是多态,重载就是重载,覆盖就是覆盖。这个很难懂迈?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP