• 7971阅读
  • 3回复

论坛上的无理取闹:由结构和类区别讨论引起的 [复制链接]

上一主题 下一主题
离线giscn
 
只看楼主 倒序阅读 楼主  发表于: 2005-09-06
论坛上的无理取闹:由结构和类区别讨论引起的
——请版主转到合理版块

本不再准备看结构和类讨论的那个帖子,想不到今天又被人顶起。然后看到有人在人身攻击,呵呵,这样吧,我将前后的逻辑理一下,也让大家看看究竟问题出在谁上面?至于我个人,如何评价我没关系,“中国这样的人败坏了一个国家”,是太看得起我了。我倒感觉中国多一个象M同志这样人,跟没有一个样。

起因是pinkscut在帖子http://www.qtcn.org/bbs/read.php?tid=1225&fpage=&toread=&page=1,咨询c++里的结构和类的区别。于是,下面有Xchinux回答了如果只要数据结构 就用struct,否则用class。这答案是错的,c++里struct和class是一样的,c++推荐的是用class,struct只是为了兼容c语言起见。也就是说,为什么在“只要数据结构”的时候,不能用class? 事实上很多c++的数据结构也好,算法也好,就是用class来封装的。另外,如果以为数据结构就是象传统c里的struct那样只定义几个变量,那也是错误的。详细请参阅清华出的数据结构一书,那本还是写的不错。

然后,2楼的同志也给了一个错误答案,此错误答案在写本文的时候已经被修改掉,不过按现在他仍然赞同上述 struct用于数据结构,其它用class(就是数据结构最好用struct了?),说明仍未对这个问题有个清晰和本质的认识。

不是说这种问题太幼稚,谁都有不知道不清楚的时候,所以我认为这个问题还是很好,因此在4楼回帖给出我的回复,在c++里,struct和class实质是一样的,如果说有区别的话,就是struct的成员(包括成员变量和成员函数)默认的access modifier是public。当然,它的继承也是public,不过此时尚未想这么多(但已经在下面某楼层上补充上了)。然后5楼,6楼的同志,可能感觉我这个答案离他们的期望值较大,或者已经超出他们目前的知识范围,所以有质疑,不过这些都好,属于正常的讨论范围。即便我在4楼的答案是正确的,你得允许别人说话是吧?为了讲的更清楚一点,在7楼,我又回了一次帖,并建议他们试验一下。这个试验并不难,随便构造一个struct,在里面加些方法,以及构造继承关系,便知道答案了。这是验证一个程序语言问题最权威的方法,因为compiler不会骗你。

象xchinux后来给出的所谓的权威答案,只是抄英文书上的,以为书上这么讲了,就是对的了。其实那能说明什么,写书的都知道,书上是允许错误的,而且不可避免的会有错误出现。象effective c++/more effective c++这样发行很多版而且被公认为很经典的书上都有很多的错误(后来给出很多的谌误)。不过好在至少在class和struct这个问题上,我很高兴看到书上还是对的。早知道如果告诉大家可以从某某书上这样讲的,就没有以后的有趣的事了,也省的麻烦。只是我一直在qt-interest上活跃,如果在qt-interest上对一个问题的回复,说某某书上是这样讲的,你毫无问题会被别人嘲笑,搞技术的需要严谨的态度,写书的人也就这样水平,书的目的在于给你对一个技术或一个较大问题的有逻辑有系统的认识,但你不能深究每个细节,有时候那个细节就是错的。这可能是国内论坛,和国外论坛或邮件列表的区别。现在很多人还停留在书上是这样讲的水平上,说明还需要很多努力。我这里不是针对Xchinux,只是针对一种现象,有感而发。从xchinux的一些帖子上看,他还是侧重于用代码本身来说问题,这是个好习惯,跟搞数学的一样,一个数学公式比一大段文字更能说明问题。

ok,此后的8楼开始,有些人就开始粉墨登场。我前面不是讲,让大家试验一下吧?所以有人在8,9楼就讲,我“试过了”。

“不过记好,...”——我想问,你让谁记好呢,你该自己记好才对。

“但是c中的struct和class区别就相差大了”——真是笑话,c里有struct,有class吗?你拿c里的struct和c++里的class比?有这个必要吗?c和c++是两种语言。有比较的价值吗?c#里还有struct和class呢,是不是也要比吗? 楼主的问题很明确,是关于c++里的struct和class的区别。。。所以这时我就发现有些人的思维有些问题了。

然后,接下来的9楼续帖,让我差点晕倒,刚才还说试过了,我还以为他真明白了,试过了还有这种回复。请看

“等你把C++类学完了你才理解类可以当然新一门语言.”——等谁c++类学完了呢? 我想问的是你又将c++的类学到什么样的程度了?至于“类可以当然新一门语言”,这又是什么“新语言”,一个人这样的水平敢大言不惭 说道,让别人将c++类学完了,再怎么样怎么样。他自己还一点都不知道。

“而struct只能看成一"数据类型"(自己定义的)”——又在重复1楼的结论了。这说明我上面的两个回帖,以及让他试验一下,都是白说了。如果真试过了,还有这样的回复,只有两个可能,(1)要不他基础太次,(2)要不智力有问题。我宁愿将这位同志向好里想,可能没有试过吧,不过是比较懒而已。

其实我应该就此打住是不是,因为有时候你跟别人讲一个问题的时候,对方离要求太远的时候,是没法子理解下去的,而且是没有再讨论下去的必要的。不过因为那时候没有认识到qtcn.org里的一些人的心态,换成现在,遇到这种人这种问题就马上打住,问题解决不了或者一直保留错误的想法,是楼主和那些保留错误想法的这些人的事情。

所以,由于看到楼上将c里的struct和c++里的class进行比较,感觉好玩好可笑,又回了一帖,让他确认“c里有class吗?”言外之意,就是不要将c里的struct和c++里的class进行比较,这没有任何意义和实际价值,c跟c++是两种语言,尽管他们很象,在语言层次上有继承的关系,但他们的确是两种不同的语言。正如c#也是在c/c++基础上发展起来的,但c#也是不同的语言。除非你要比较c、c++两种语言的区别,否则在楼主这个问题上,没有任何必要去讨论c里的struct和c++里的class。

这个同志,回帖很是积极,继续将自己的问题进行到底。

在11楼,列了一点代码,想说明的居然是 c里的struct和c++里的struct的区别了,谁跟你讨论这个来着了?这又不是楼主要问的问题。

还“看到了吗?第二个是不是和类很相似.再想想我上面几楼说的话............有没有感觉?”,
——哈哈,“看到了吗”?我是看了吗?当没看到。这时才明白,原来他前面讲的c++里的struct和class很相似是指 c++里的struct 声明变量的时候,跟class一样,不必在前面跟struct前缀。我这时彻底发现此人的无聊和无知了。而且他的口气是,“再想想我上面...”,感觉很有成就是不是。怎么就不知道自己不知道将话题叉到什么地方去了。

乍看这11楼的回帖,第一感觉就是想笑,主要为他的语气,无知不无知都是可以原谅的,但无知还无畏,而且自我感觉不错的话,就比较可笑了,除了回复“哈哈”,就不想再继续跟他讨论下去了。

估计这个“哈哈”比具体指出他的错误还让他难受,这个同志有些恼羞成怒了,在13楼回复“哈P”,你想表达什么,想表达自己的没有教养,没有素质吗?签于此人讲粗话,我也不讳言指出他的无知了,并让他去读c/c++入门的书了。

其实无知并不是在损人,你不知道这个问题,在这点上就是无知,不管你承认不承认。只是国人的好象所谓的自尊心比较强,受不了别人说他无知。qt-interest上面如果你问一个关于c/c++的问题而无关qt的,看有没有人回复你,就是有回复的,一定是,建议你去学习c/c++,这里是qt maillit,不是来讨论c/c++的。你在上面问一个doc里有的,而自己没有去看的,毫无疑问就会被人耻笑。这很正常,这是一种学习态度的问题。从个人来讲,如果一直是这种态度,我很难发现这个人会有多大的发展前途,因为首先他的学习态度不端正。

此后,kls好象是该帖里唯一对这个问题有正确理解的人。不过好象他说话好象也不客气,问楼上那位被我指责无知的M同志,“悄悄地问,你学过c++没有”,“小毛孩,啥都不懂,还要称老大,学着点”。。。早知道论坛上是可以这样讲话,我老早就不这么客气了。。。不过我总还是给人留点面子吧,无知也不是他的错,原因很多,可能没上过多少学,可能智力有问题,可能家族不幸福,可能工作不如意,等等等等。归根到底也是是国家制度的问题。

16楼的另位一位同志,好象没看前面的帖子,这也是国内一些人的通病,一上来就回帖,不仔细看或根本没有看前面的已有帖子,这首先是对前面全部回帖(不管对错)的不尊重,另外也是个态度问题。结果16-18三楼上连续给出的看法又全有问题的。前面的全部的讨论到此为止,又从头回到错误的起点了。

看到楼上的kls列了一部分代码,我想我也不能太懒,然后就构造了一些代码,针对16-18楼上的回帖,指出E同志的答案在“误导观众”
——这有问题吗?本来就在误导观众,特别是一些对这个问题不清楚,希望在这里找到答案的人。但好象就因为这句话,导致这个E同志说我说话太损,请问我损在哪里?是因为我说你在误导观众,还是说M同志无知,还是因为回复了他的“哈哈”引起他的“哈P”。无知是客观存在的,并不是我在损他。你在误导观众,也是客观存在的。至于你后面认识到自己错了,正常的人都应该这样做,而不是象M同志,一直将“无知”进行到底。M同志后面的无知,已经从技术知识的无知,延伸到品德上的问题了。

我在19楼给出的例子够详细了吧,可以回答上面的全部存在的疑虑,比如struct不能带成员方法,不能继承,等等等等这些问题。Xchinux此后引用某英文书上的,证实了这些。按理讲,这个讨论真该到此为止了。

此前的M同志,从23楼开始进行人身攻击了,

“自己不知道廉耻.
自己先提出这牛头不对马嘴吧的问题.哈哈........我也来笑两个.......”

——请问,我提什么问题了?你以为我问“c里有class吗”是在问你问题吗?我只是在让你明白,你不能拿c里的struct跟c++里的class进行比较。
——这又跟廉耻什么关系?
——23楼上的引用我此前的“c++里吗?struct和class是一样的,差别就是 struct的成员 默认是public的”,这句话有错吗?

“自己看我在回第一个贴以上是谁先提到这些没关系说出有关系的问题”,
——我前面这么多文字已经在从头向下在介绍整个讨论的流程,我在哪里“提到这些没关系说有关系的问题”了,最好M同志在此帖后跟帖说明,也让大家知道至少你的理解智力没有问题。

此后,26楼的同志,认为构造没有方法,是错误的。不过我前面一再提错误是可以理解的。知识总是在不停的积累和改进过程中。

27楼的M同志的话,有点街头泼妇纵使知道自己理亏,但绝并不饶人,怎么也要说上两句的作风。继续发扬了,

“哎.以后giscn的问题大家算是不敢回了.
回错了还会骂人.
讽刺别人说去收小费...........”
——1. 我在这里问什么问题了?好象楼主问的问题不是我。
——2. 我骂人了?我只是说明了一个事实。真要深究起来,我认为你的“哈P”是你没有教养的开始。所以我才说的不客气了一点点。
——3. 我建议XChinux开个培训普及c++知识,这样不好吗?M同志的c++基础是有问题,培训一下有何不可?至少我在qtcn.org上看到的,xchinux同志的水平要比你高的多。
——4. “小费” 从何而来,你知道小费是什么意思吗?我怀疑你小学上完没有?

“哎.如果败类都有...............
中国多了会有后患啊............”
——“败类”都出来了,我想就因为他这个词,我在这个帖子里怎么说这位M同志都不过份吧?不过好在我这帖子从始至终,除了指出他技术上的无知,和人品上的不足外,也没再多说什么了。
——另外,如果说中国有些人是多余的话,我想绝对不会是我。

“难道每个人回的贴都必须是你的意思吗?如果错了或者和你想法不同.你就有权BS别人吗.........”
——你有权讲粗话在前吗?我就有权BS你。
——指出某些同志的不足,和错误所在,并不是在BS别人,请你搞明白。这是技术论坛,每个知识点都可能会有错误,知识是允许错误的,指出大家的错误,共同进步,才是这个论坛存在的目的之一。
——我如果一定要每人都听我的意见,我也不会从前面到后 回了三个帖子,最后还给出示例代码,来说明这个问题了。无奈是一些人死活听不进去。

“我以后是不敢回他贴了.哈哈............
中国这样的人败坏了一个国家.”
——我如果有技术上的问题,估计你也帮不上了我的忙。无论Qt, c/c++, 计算机,和英语水平,实际做项目的经验,跟学位社会学历,我都没有跟你一般见识的必要。只是由于M同志的帖子涉及人身攻击,“不知廉耻”“败类”,所以不得不站出来再讲两句。
——我想中国还是乐意由我来“败坏”的,中国宁愿给我经费,也好过给M同志这样无知加道德有缺陷的人。

28楼的E同志,“giscn说话确实有点太损了,呵呵,大家看开一点吧,我也确实没有注意到C++中的Struct 如此的灵活,不过giscn老兄也有点。。。”,请问(1)我太损在哪里?因为14楼我对M同志的回复,还是因为说是“误导观众”? 为什么为有14楼的回复,请见我前文所述。(2)“不过giscn老兄也有点。。。”,有点什么?请跟帖说明,ok?

总得来讲,qtcn为大家提供了一个良好的交流平台,xchinux至少在论坛管理上很积极。所缺的也许是时间。目前讨论尚没有很好的开展起来,还需要大家一起的努力。至于M同志,论坛大了什么样的人都有,我当没看着就是。

ok,写了很多了,足足花了一个半小时。好在今天是Labor day,本来也不想干活。浪费大家时间了。
http://nzt.spaces.live.com
离线kls
只看该作者 1楼 发表于: 2005-09-06
giscn,你的时间好充裕嘛,花“一个半”小时来写这种无聊的东西
什么是Labor Day?不是5,1吗?你在哪里?
好长啊,这么罗里罗索讲什么呢,跟这种人讲道理,真是低了你自己 了。
有些观点很赞同,知为知之,不知为不知,没什么丢脸的。
qt-interest上的giscn.lzb@xxx是你吗?谢谢帮我解答问题
离线XChinux

只看该作者 2楼 发表于: 2005-09-06
  呵呵,楼主的态度还是很积极的。
  关于那个帖子,就算是由我的回复引起的吧。起因是这样的,我原本的理解就是正确的,但就在一两个月前,看了某地的一个帖子,关于struct与class的区别,讲了好多,而且似乎结论是正确的(当然,现在看来是错误的),我也于是怀疑是不是我这些年没有关注C++的发展,C++出了新的规则了,而我有些落伍了,于是就有些怀疑我原来的理解了。但一直没有去专门找这方面的资料以验证。另外我的回复:

如果只要数据结构 就用struct,否则用class

  我只是在当时没有查找资料验证其区别之时,给一个实用的方法。这句话本身或许会引起某些网友的曲解,但,我的本意是,从大家的传统来说,数据结构采用struct,而如果有方法等采用class,理由很简单,就是在C++项目中,让开发者知道,这个结构是用struct定义的,那么它里面是没有定义多于的方法的,它只是数据结构。我相信这个方法永远适用,除非C语言消失。试问有哪位开发者会用class来定义一个数据结构,而用struct来定义类及其方法?不符合传统习惯。并不是说它不对,而仅仅是别扭而已。
  或者是我发言时没有解释清楚,令许多人误解了,呵呵,那我要多注意了,谢谢楼主的纠正,呵呵。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线downstairs

只看该作者 3楼 发表于: 2011-02-26
编程编累了,定要把休闲娱乐板块的帖都看完!!耐心!
喜爱编程的猫头鹰
快速回复
限100 字节
 
上一个 下一个