24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1425  |  回复: 20
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

yalefield

金虫 (文坛精英)

老汉一枚

[交流] 【分享】恐怖的C++语言 [转载]

作者:酷壳

Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时的那个微软的工程师主要是在做Git的Windows版,但他却发现Git的源码居然是C语言写的,而不是C++,于是他(Dmitry Kakurin)在Linux社区里发贴表示对Linux的不满,语言很直接:

Pure C as opposed to C++. No idea why. Please don’t talk about portability, it’s BS. (纯C写的,而不是C++,不知道为什么,请别告诉我是为了移植性,这完全是胡扯。)

Linux之父Linus Torvalds马上跟贴,在贴子中,Linus言辞很直接,直接表明C++是一个很恐怖的语言,他在贴子中说:

*YOU* are full of bullshit. C++ is a horrible language. It’s made more horrible by the fact that a lot of substandard programmers use it. (你才是完全在胡扯。C++是一门很恐怖的语言,而比它更恐怖的是很多不合格的程序员在使用着它

Linus的这个观点我是比较同意的,我个人也在几年前的《STL String类的写时才拷贝》以及以后的一些文章中表达过C++的确并不是一个很成熟的语言,这种观点一直都围绕着我。这是因为它的学习成本实在是太高了,编译器和类背着你做了很多你不知道的事,而且,C++非常容易地出错和发生很多意想不到的问题。

当然,这篇文章并不是要继续声讨C++,也不是回顾以前的某个事件。我们这里只谈技术。昨天,我在网上看到一个邪恶的C++的示例,在这里给大家share一下,让大家看看C++这种编程语言的恐怖和邪恶的一面。下面的这个例子,比那个“#define  private  public”还更加邪恶。

请看下面这段代码,你能告诉我它会输出什么吗?(注意main函数中高亮的那一行)

[code]
01 #include   
02 #include   
03   
04 typedef int UINT4;  
05 using namespace std;  
06 class Hack  
07 {  
08 };  
09   
10 Hack& operator< (Hack &a , Hack &b)  
11 {  
12     std::cerr << "小于操作符\n";  
13     return a;  
14 }  
15   
16 Hack& operator> (Hack &a, Hack &b)  
17 {  
18     std::cerr <<  "大于操作符\n";  
19     return a;  
20 }  
21   
22 int main(int argc, char ** argv)  
23 {  
24     Hack vector;  
25     Hack UINT4;  
26     Hack foo;  
27   
28     vector foo;  
29   
30 return(0);  
31 }

是的,上面这段代码如果只看main函数中的那句“vector foo”,你会觉得很眼熟,然而,事情并非那么简单,我们可以看到vector, UINT4和foo都是Hack类的实例,这就是邪恶的开始,那两个尖括号< >则成了两个运算符,大于和小于,这两个运算符却又被重载了。其实,真正的语句是:

1 vector.operator<(UNIT4).operator>(foo);

所以,所有的一切都符合我们的C++的规范和语法,自然程序也能被顺利编译通过(至少,在我的G++上是没有问题的)。而整个程序的运行结果自然是:

1 $ ./horror  
2 小于操作符  
3 大于操作符

是的,如果你通晓C++的一切的一切,你自然不会对这段程序感到惊奇。这样的事情在C/C++的世界中并不少见,要搞乱C/C++的代码并不是一件难事,花样多得数不胜数,只要看看《6个变态的C语言Hello World程序》(http://coolshell.cn/?p=914)你就知道了,而且,还有一个简单的教程《如何加密/混乱C源代码》(http://coolshell.cn/?p=933)告诉你一些简单的做法。

那么,如果你有一天在读程序中看到“vector foo”,你会觉得那只是一个幻觉吗?
http://coolshell.cn/?p=1724
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

至尊木虫 (文坛精英)

会冒泡之超级潜水员

文献杰出贡献

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
波不动(金币+1,VIP+0):感谢交流! 12-5 19:34
为了应付考试把它学了,到现在还不知道到底有什么用,有点悲哀
6楼2009-12-05 19:28:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 21 个回答

zxe841015

铜虫 (小有名气)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
jjdg(金币+1,VIP+0):欢迎新虫! 12-5 19:30
O(∩_∩)O~现在还没资格评论   学习了
2楼2009-12-05 12:59:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

木叶清风

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+1,VIP+0):谢谢交流! 12-5 14:13
看过这一个,要是真要说错的话那就不要编程了,每门语言都是有弱点的,你非要用她的弱点强行构造出容易出错的东西来批判她,那你就别编程了
www.cvdelver.com
3楼2009-12-05 13:47:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
波不动(金币+1,VIP+0):谢谢交流! 12-5 19:26
这类话题确实只有高高手才能体会得到,我们小菜就无所谓了。
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
4楼2009-12-05 15:28:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 福建理工大学材料学院先进合金团队招收考研调剂学生 +3 大华金商都 2026-03-30 4/200 2026-03-31 01:04 by 方英俊602
[考研] 085701环境工程求调剂 +11 多久上课 2026-03-27 12/600 2026-03-30 21:21 by 研究僧导导
[考研] 生物学学硕,一志愿湖南大学,初试成绩338 +7 YYYYYNNNNN 2026-03-26 9/450 2026-03-30 20:29 by YYYYYNNNNN
[考研] 105500药学求调剂,一志愿山东大学药学,348分 +3 gr哈哈哈 2026-03-28 3/150 2026-03-30 18:56 by 源_2020
[考研] 一志愿厦门大学材料工程专硕354找调剂!!! +5 贝呗钡钡 2026-03-30 5/250 2026-03-30 18:16 by 无际的草原
[考研] 0703 化学 求调剂,一志愿山东大学 342 分 +7 Shern—- 2026-03-28 7/350 2026-03-30 16:31 by nothing投稿中
[考研] 070300化学354求调剂 +7 101次希望 2026-03-28 7/350 2026-03-30 13:22 by Iveryant
[考研] 一志愿南昌大学324求调剂 +5 hanamiko 2026-03-29 5/250 2026-03-29 16:46 by 学员8dgXkO
[考研] 2026年华南师范大学欢迎化学,化工,生物,生医工等专业优秀学子加入! +3 llss0711 2026-03-28 6/300 2026-03-29 10:26 by llss0711
[考研] 085600,专业课化工原理,321分求调剂 +5 大馋小子 2026-03-28 5/250 2026-03-29 08:56 by qingfeng258
[考研] 305求调剂 +8 RuiFairyrui 2026-03-28 8/400 2026-03-29 08:22 by fmesaito
[考研] 071000生物学求调剂,初试成绩343 +7 小小甜面团 2026-03-25 7/350 2026-03-28 20:25 by 唐沐儿
[考研] 调剂 +3 好好读书。 2026-03-28 3/150 2026-03-28 12:04 by 王保杰33
[考研] 340求调剂 +5 jhx777 2026-03-27 5/250 2026-03-28 04:18 by fmesaito
[考研] 070300化学求调剂 +4 起个名咋这么难 2026-03-27 4/200 2026-03-27 21:39 by 83503孙老师
[考研] 085600,材料与化工321分,求调剂 +9 大馋小子 2026-03-27 9/450 2026-03-27 14:30 by mmm just
[考研] 求调剂 +3 刘柯@ 2026-03-24 4/200 2026-03-27 11:28 by shangxh
[考研] 一志愿郑大085600,310分求调剂 +5 李潇可 2026-03-26 5/250 2026-03-27 11:14 by 不吃魚的貓
[考研] 321求调剂 +6 wasdssaa 2026-03-26 6/300 2026-03-26 20:57 by sanrepian
[考研] 总分322求生物学/生化与分子/生物信息学相关调剂 +5 星沉uu 2026-03-26 6/300 2026-03-26 19:02 by macy2011
信息提示
请填处理意见