以前觉得你还是挺行的,这次……诶,反正我不推荐论战。不推荐论坛论战的原因是,单单用文字有时候说不清很多事情。
计算机世界的论战我推荐面对面+画图+实践,论一个小论点写作文可能很简单,论一个真理可能需要点时间和空间。论一个真理也需要广而深的知识累积,广不是道听途说的广深不是钻牛角尖的深。怎么说呢,我看了之前的帖子,反正是不推荐论战,一味好战可能造成思维的狭隘和不可避免的疏忽,特别是文字论战。我因为入C#时间较短,不清楚老赵的为人,但是我深信老赵不会在文字的疏忽上纠缠不休。可是老赵不纠缠不代表拥护老赵的人不纠缠,这样一场语言之争就出现了,论坛刚经过一场风波又要迎来一场乌烟瘴气。所以我希望的结果是,lz和老赵单独去探讨这件事情,然后一起把这个研究过程和结果展示给大家。
一来论坛里不会乌烟瘴气火药味过浓,二来,大家也能得到比较全面且正确的信息。
平和且可分享的知识才是最值得推广的,而不是一味的追求战。
计算机世界的论战我推荐面对面+画图+实践,论一个小论点写作文可能很简单,论一个真理可能需要点时间和空间。论一个真理也需要广而深的知识累积,广不是道听途说的广深不是钻牛角尖的深。怎么说呢,我看了之前的帖子,反正是不推荐论战,一味好战可能造成思维的狭隘和不可避免的疏忽,特别是文字论战。我因为入C#时间较短,不清楚老赵的为人,但是我深信老赵不会在文字的疏忽上纠缠不休。可是老赵不纠缠不代表拥护老赵的人不纠缠,这样一场语言之争就出现了,论坛刚经过一场风波又要迎来一场乌烟瘴气。所以我希望的结果是,lz和老赵单独去探讨这件事情,然后一起把这个研究过程和结果展示给大家。
一来论坛里不会乌烟瘴气火药味过浓,二来,大家也能得到比较全面且正确的信息。
平和且可分享的知识才是最值得推广的,而不是一味的追求战。
“计算机世界的论战我推荐面对面+画图+实践”----这就是我要用的形式“另一方面也打算梳理一下这几年对异步和线程的深入总结---从计算机底层组成原理入手,深入操作系统,然后以汇编、C/C++、C#这一条自身学习轨迹为主线,做一次全方位立体式的解剖”---这就是我要用你所说的形式阐述的主要目的还是要谢谢兄弟善意,冷静的提醒
Java和C#里面没指针,对吧(unsafe除外),但我们老师曾静有一句话我感觉很好“别看C#和Java里面没指针,其实到处都是指针” 这个东西还真是在乎人的理解呀 有时光硬抬杠是没用的
以下是我刚说C#时的见解
“C和C++的关系不一般,C++完全兼容C,又是面向对象的语言。基于C++的类库真是所向披靡。
下面从头到尾比较C++特有的东西和编程区别。
1.在定义常量上,C采用#define P 3.14,而C++除兼容外,用const限定词,如const int n=10;,const 的引入,在面向对象编程中起到保护共用数据成员的作用。
2.C要求变量的声明要集中在程序开头,而C++可在任何位置声明。
3.C++方便函数传值,提出引用概念,和指针效果雷同,但易于理解,使用方便,用途甚广,C++面向对象编程中,C#中更是无处不引用,JavaScript,Java也是如此。
4.C++在解决函数同名有关问题上,真是煞费苦心,提出函数重载概念,有所谓横向重载,纵向重载。在函数问题上,函数的参数方式更是扩大化,有引用,传入,传出等等方式,同时也允许有默认参数。C++更深入的提出了函数模板,类模板,直至STL;C#更是扩大化,提出泛型概念,加大了泛型编程用途。
5.C++新增Bool变量,Flag标志更明确易懂,当然兼容C的方式;新增扩展string类型,其实为类类型。
6.在动态开辟内存上,C用到的是void *malloc(sizeof(类型));是一个函数。而C++用的是new运算符,相比之下较为方便;C#中new成为一个标识符。
7.C++从结构体中引出类类型。
关于面向对象的理解研究。
出于大型软件的开发设计,提出面向对象思想,目的有以下几点:代码的重用,数据的封装,便于设计,定义和接口的分离等等。
基于对象即基于类,便于设计,条理清晰是优点。有以下问题:
1.什么是类?类包含哪些东西?;
2.类和对象的区别;
2.对象的初始化问题;
3.在private问题上,C#引入字段和属性问题。
4.类的静态成员问题。
5.对象中数据访问问题。
面向对象编程:
真正的面向对象问题就是一个继承问题。
1.如何继承?在C#中更简单实用。继承后的问题?
有以下几点:
派生类和基类的关系引发的问题。
构造函数问题,同名数据特别是同名函数问题!!!
继承-->引起同名函数问题-->引发多态性概念-->为应用解决问题提出虚函数概念(virtual)-->引出纯虚函数问题(函数 const =0)-->为设计引出抽象基类(abstract)
C#在一些问题上更清晰明了,加上关键字new,override关键字。后继:
C++解决同名问题特别是同名类问题,提出命名空间概念;C#命名空间完全扩大化,用此组织庞大的类库,清晰明了,便于应用,简化了复杂的类库关系问题,使学习和应用更加简单。”我现在看来很是幼稚,但是你如果没学过C++,何来比较
让我想起我一个同学,他说过他虐我没商量。
当然,最后总结了一下,他只是在DotA上虐了我一局。
那天晚上我们玩了30局上下而已。
之前做队友的时候嫌我太辅助,太软,抗打没输出,因为他每局都做主力Carry,我每局都是名不见经传的辅助。于是他说他可以虐我没商量的。
其实我是玩Carry玩腻了,才会选择辅助这条休闲辅助的道路的。当然在“一些方面”他的确虐我了,比如身高比我高很多,虐的我很惨啊。
你能谈谈C++和C#多态的特点吗?你肯定谈不出来,因为你只了解C#,你根本没有个比较的对象,所以你是无法深刻的!!!
“C++自从定义virtual 函数基类起,其派生子类中凡是与基类virtual函数相同签名的全是虚函数,全是对最临近基类虚函数的重写(重写是一种特殊的隐藏,能够使包含virtual基类对包含virtual的派生类指向的不同产生多态效果)
C# 自从定义virtual 函数基类起,凡其直接派生类中与基类virtual函数相同签名且有override关键字的全是虚函数,凡是直接有new关键字的便是隐藏(C#中重写和隐藏是两种不同的概念)
区别:C++只要定义虚函数,那么在起派生类中存在相同签名的还是不存在相同签名的,都是派生类中存在虚函数!定义一次,到处皆“虚”,派生链就是虚函数链
C#定义虚函数,在起派生类中存在相同签名的new修饰事,便阻断了虚函数。可多次定义虚函数,遇new虚函数链中断。
共同点:都是通过含有虚函数的基类指向派生类的不同实现多态的,且都是在虚函数链上起效果
C#重写定律:基类中存在不被隐藏的虚函数便能重写。
①关于函数的返回值:
函数的返回值为引用或指针时,除非返回Heap上的地址,否则函数每次调用返回的地址都是相同的”
那我就告诉你,为什么我们都很敬重老赵。老赵有没有写编译器我不知道。但是老赵的blog写得实实在在给我们讲解了很多东西。老赵的InfoQ,是国内最好的架构师电子杂志,我每周都看。为什么我说装配脑袋是我偶像,因为他写的不动点算子的文章对我开发很有帮助。不要以为发明出一套理论,或者来一个惊世骇俗的东西就能成为别人尊敬的大师了。我们都是实实在在做事情,一点一点积累这种信任和别人认可的。
擦,那个小朋友没头衔嘛?至少是富二代,MVP,版主,其他的不说了,总之,是个很有基情的年轻小伙子。
打错字了,不是基情,是激情。
版主是辅助,大牛们是Carry,但是任何真正的Carry都不会小看辅助的。DotA All Stars!