免费注册 查看新帖 |

Chinaunix

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

[C++] NM的C++,基类指针指向派生类时指针概念已经与C语言的有很大不同,但你还用“->” [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-18 10:16 |只看该作者 |倒序浏览
本帖最后由 边学CPP边骂CPP 于 2012-10-18 12:11 编辑

操NM的C++,基类指针指向派生类时指针概念已经与C语言的有很大不同,但你还用“->”,你他妈的就不能换个符号!

在C语言里如果一个指针成功(编译通过)指向一个实例后,就可以用这个指针完全操作这个实例,用的是“->”符号,直观明了。
但是在C++里,他妈的当用基类指针指向派生类后,这个指针还不能完全操作这个派生类对象(他妈的,老子当然知道这是为了实现多态,不用跟我解释这个)。但是,他妈的既然你这时的指针概念已经与C语言的指针概念有很大不同了,你就别用“->”操作符了,但是你还用“->”,还得让程序员别着弯地去想你的指针的不同,你他妈的就不能换一个别的符号,比如“->>”(他妈的还需要老子帮你举例)。

论坛徽章:
0
2 [报告]
发表于 2012-10-18 10:27 |只看该作者
他妈的,C++就是个垃圾语言!

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
3 [报告]
发表于 2012-10-18 10:33 |只看该作者
回复 1# 边学CPP边骂CPP


    以后这么写比较好。

  1. public class Shape
  2. {
  3.     // A few example members
  4.     public int X { get; private set; }
  5.     public int Y { get; private set; }
  6.     public int Height { get; set; }
  7.     public int Width { get; set; }

  8.     // Virtual method
  9.     public virtual void Draw()
  10.     {
  11.         Console.WriteLine("Performing base class drawing tasks");
  12.     }
  13. }

  14. class Circle : Shape
  15. {
  16.     public override void Draw()
  17.     {
  18.         // Code to draw a circle...
  19.         Console.WriteLine("Drawing a circle");
  20.         base.Draw();
  21.     }
  22. }
  23. class Rectangle : Shape
  24. {
  25.     public override void Draw()
  26.     {
  27.         // Code to draw a rectangle...
  28.         Console.WriteLine("Drawing a rectangle");
  29.         base.Draw();
  30.     }
  31. }
  32. class Triangle : Shape
  33. {
  34.     public override void Draw()
  35.     {
  36.         // Code to draw a triangle...
  37.         Console.WriteLine("Drawing a triangle");
  38.         base.Draw();
  39.     }
  40. }

  41. class Program
  42. {
  43.     static void Main(string[] args)
  44.     {
  45.         // Polymorphism at work #1: a Rectangle, Triangle and Circle
  46.         // can all be used whereever a Shape is expected. No cast is
  47.         // required because an implicit conversion exists from a derived
  48.         // class to its base class.
  49.         System.Collections.Generic.List<Shape> shapes = new System.Collections.Generic.List<Shape>();
  50.         shapes.Add(new Rectangle());
  51.         shapes.Add(new Triangle());
  52.         shapes.Add(new Circle());

  53.         // Polymorphism at work #2: the virtual method Draw is
  54.         // invoked on each of the derived classes, not the base class.
  55.         foreach (Shape s in shapes)
  56.         {
  57.             s.Draw();
  58.         }

  59.         // Keep the console open in debug mode.
  60.         Console.WriteLine("Press any key to exit.");
  61.         Console.ReadKey();
  62.     }

  63. }

  64. /* Output:
  65.     Drawing a rectangle
  66.     Performing base class drawing tasks
  67.     Drawing a triangle
  68.     Performing base class drawing tasks
  69.     Drawing a circle
  70.     Performing base class drawing tasks
  71. */
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-10-18 10:48 |只看该作者
回复 3# zhujiang73


    赞同我的看法就表个态,别拐弯抹角的

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
5 [报告]
发表于 2012-10-18 10:57 |只看该作者
边学CPP边骂CPP 发表于 2012-10-18 10:48
回复 3# zhujiang73



       CU 最近人气不高,我是来扇风的。

论坛徽章:
0
6 [报告]
发表于 2012-10-18 11:01 |只看该作者
谁能说服我对C++的这个质问,我以后就不再骂C++了。

论坛徽章:
6
技术图书徽章
日期:2013-11-13 11:11:27子鼠
日期:2014-02-20 17:54:13处女座
日期:2014-06-16 17:43:33午马
日期:2014-08-08 09:11:17未羊
日期:2014-08-10 11:57:072015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2012-10-18 11:02 |只看该作者
zhujiang73 发表于 2012-10-18 10:33
回复 1# 边学CPP边骂CPP


这很像爪蛙的写法么{:3_185:}
西卡西,就算用爪蛙写,行为函数只会写在Interface里,而不是class里。

  1. public class Shape
  2. {
  3.     // A few example members
  4.     public int X { get; private set; }
  5.     public int Y { get; private set; }
  6.     public int Height { get; set; }
  7.     public int Width { get; set; }

  8. }
  9. Interface ShapeMethods
  10. {
  11.     public void Draw();
  12. }

  13. public class Circle : Extends Shape Implments ShapeMethods
  14. {
  15.     public void Draw()
  16.     {
  17.         // Code to draw a circle...
  18.         Console.WriteLine("Drawing a circle");
  19.         base.Draw();
  20.     }
  21. }
  22. ...
复制代码
3年没用爪蛙了,有点生疏。

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
8 [报告]
发表于 2012-10-18 11:05 |只看该作者
边学CPP边骂CPP 发表于 2012-10-18 11:01
谁能说服我对C++的这个质问,我以后就不再骂C++了。



    就像法庭上律师辩论,您可以举证质证,骂大街是不好的。  

论坛徽章:
0
9 [报告]
发表于 2012-10-18 11:10 |只看该作者
这些天我列举出C++很多不合理的地方,让大家对C++的真面目有了清晰正确的认识。

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
10 [报告]
发表于 2012-10-18 11:19 |只看该作者
边学CPP边骂CPP 发表于 2012-10-18 11:10
这些天我列举出C++很多不合理的地方,让大家对C++的真面目有了清晰正确的认识。




      和(游戏里的) AK47 一样,连发不好控制,短点射,少用复杂特性。

      
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP