C++,你是真实的世界

来源:互联网 发布:书立淘宝 编辑:程序博客网 时间:2024/04/29 10:39

      早在一年前,我心底就曾发出过这样的感叹,C++才是这真实的世界。

      真实的世界是自由的,是复杂丰富的,也是充满危险和陷阱的。不少人抱怨C++过于复杂,其中即有不明真相的群众,又有IT行业的佼佼者。但进入这个行业以来,C++一直是我指尖下面的得力干将,也从未对它失去信心,或者认为它是过时的。我有过抱怨,但从未放弃使用它;就好比我有过对生活的不满,但从未对它失去信心,更不会在猎取人生最大目标之前将自己提前用某种方式终结。我不认为自己是世界上最乐观的人,但我相信即使再乐观的人也会有困顿的时候,也会说:“生活就像狗屎!” ,我也说过:“C++真是一门糟糕的语言!”

       生活充满了重重困难,是因为它并不像我们想象的那么纯粹。但C++给了我们一个真实的时间应该有的自由,当我们正确行使这份自由,就能获得强大的力量,若我们滥用它,也将为此付出代价。生活也正如此,当我做出一些危险或不正确的举动时,上天不会像Java虚拟机一样为我们承担后果。

string getString(){    return "just a test";}void test(){    const char *pc = getString().c_str();    cout<<pc<<endl;}

       临时对象生命周期问题。因为C++兼容了C的指针,同时又引入了类和析构函数,弄得我们一不小心就会被类似的问题困扰。我认为这是需要改进的地方,就好比我们在使用电锯时,至少应提供一个可拆卸的防护罩,防止电锯的火花进入眼睛。

        有人说C是C++的负担,但如果C++不兼容C,那就不是C++了。指针是C被继承的最伟大特性,有人说指针应该被废弃,但这里存在一个悖论:如果你要用锋利的刀削东西,那就得考虑手的安全。

char* data = getData();while(eof(data) == false){      int* ptrInt = (int*)data;      int a = *ptrInt;      //...      ++ptrInt;}

      有人也认为我们应该干脆只用C了,C++根本是多余的,但领教过GTK的人不会认为用C来进行面向对象设计是一个好的选择。作为有Class的C,C++的表现力比C强大得不只一点点。

      C++ 不仅仅是有Class的C,C++还有模板和STL。正因为C++包含了这些看似不相干的东西,使它颇受争议。这些争议颇有一部分来源与历史问题:以前的编译器技术很久没有跟上C++标准。同时,这也印证了我刚才提到的那个悖论。

      C++,它承前启后,包罗万象,也以此成为了一种可以延续的文明。

      如果是在Java中,要在一段byte[]中截取int值,恐怕要写更多的代码,同时让CPU做更多的无用功。

    

     在过去的岁月里,我使用过Object Pascal(delphi)来编写医疗ERP软件,使用C#制作个人财务软件,使用Java做过android开发,这些工具在不同领域给了我很大的帮助,

但在上述的每项工作中,包括我热爱的3D图形领域,都离不开C++。因为C++即是真实的世界,我永远都离不开它,我永远都不会为了逃避什么而躲到虚拟机的象牙塔,或者躲到Java所谓的只有对象,没有真实的内存地址的“安全环境”。真实的世界不是纯粹的,单一的,真实的世界是丰富的,庞杂的。

    


0 0
原创粉丝点击