服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++相比其他语言到底难在哪里?

C++相比其他语言到底难在哪里?

2020-12-02 23:02今日头条华清远见成都中心 C/C++

大家都知道c++完全兼容c,c++是c语言的增强版,如果没有学习过c语言或者先学习的其他语言,比如c#,再学习c++就会觉得好难呀,那么c++相比其他语言到底难在哪里呢?

看过编程语言排行榜的都知道,c/c++自02年以来,不管时代如何发展,其排名一直在前五以内,足见其在编程语言界的地位。编程界流行这么一句话:c几乎什么都能做,c++几乎什么都能做好,足见其功能的强大。

大家都知道c++完全兼容c,c++是c语言的增强版,如果没有学习过c语言或者先学习的其他语言,比如c#,再学习c++就会觉得好难呀,那么c++相比其他语言到底难在哪里呢?

C++相比其他语言到底难在哪里?

一、C++历史包袱太多

C++是上世纪80年代的发明,算是比较古老的了,在长期的发展中,存在大量的历史问题,在解决某个问题时,面临的选择太多,为了兼容以前的代码和以前的规范,不得不使整个系统复杂庞大。

二、C++没有一个唯一的大东家

我们知道很多语言背后都有一个团队在运营,比如微软的c#、甲骨文的java、谷歌的go,再看c++,它不隶属于任何一个团队,它没有唯一的编译器开发商,微软的msvc、linux的g++,还有clang等等,这么多厂商,谁也不占主导地位,谁也不听谁的,最后只能成立一个c++标准协会,大家协商着来,相互妥协,这种相互妥协,导致c++变得异常复杂,既兼容这个又兼容那个,迄今为止没有一个公认的严格的c++规范,c++是非常自由的,而自由也意味着难度大

三、c++没有完善的自动垃圾回收机制

当我们一提到c/c++,大概首先能够想到的就是指针,指针是c/c++的精髓,同样也是难度的根源之一,像Java、Python等很多编程语言是没有指针的,因为他们的虚拟机或者解释器自带垃圾回收机制,编程者完全不用操心内存回收的问题,而c/c++在使用完申请的内存空间之后,又要回收,最常见的问题就是忘了回收或者其他变量正在引用就提前回收了,而带垃圾回收的语言,编程者根本不需要操心这些事,完全不需要知道内存是如何分配的,该谁来回收以及如何回收,自动垃圾回收有利有弊,利是对开发者简单,弊是运行效率相对低下,c/c++是注重运行效率而牺牲了简单性。

四、c++语法博大精深

上面说了这么多,强调的都是背后原因,那具体说来,到底c++难在哪里呢?相比Java、C#、Python、PHP、JavaScript、Go、C、R、scala、F#,在纯语法上,和c++的难度完全不在一个量级,而说C++简单的,大概都是刚毕业没几年,只玩过c++而不知道其他语言的,比如复杂的const和static语义,指针运算,取地址运算、模板、多态、构造函数、继承等等。

五、第三方库不多

相对来说,c++主张从轮子造起,第三方库不是太多,很多看似简单的功能都得自己实现或者拼命的找库,一般来说,c++使用的时间长了,就会掌握的更好,因为可以不断积累库函数。

没有哪一种语言是绝对好绝对不好的,都各自都各自的优势和劣势,c++是一种非常灵活的语言,具有撰写高性能代码的能力,几乎覆盖了我们能够想到的所有的领域,包括航空航天、半导体和设备驱动等等,而c++除了性能优势,也非常的稳定,20年前的代码现在依然可以使用。

延伸 · 阅读

精彩推荐
  • C/C++C++之重载 重定义与重写用法详解

    C++之重载 重定义与重写用法详解

    这篇文章主要介绍了C++之重载 重定义与重写用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    青山的青6062022-01-04
  • C/C++深入理解goto语句的替代实现方式分析

    深入理解goto语句的替代实现方式分析

    本篇文章是对goto语句的替代实现方式进行了详细的分析介绍,需要的朋友参考下...

    C语言教程网7342020-12-03
  • C/C++C语言实现电脑关机程序

    C语言实现电脑关机程序

    这篇文章主要为大家详细介绍了C语言实现电脑关机程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    xiaocaidayong8482021-08-20
  • C/C++C/C++经典实例之模拟计算器示例代码

    C/C++经典实例之模拟计算器示例代码

    最近在看到的一个需求,本以为比较简单,但花了不少时间,所以下面这篇文章主要给大家介绍了关于C/C++经典实例之模拟计算器的相关资料,文中通过示...

    jia150610152021-06-07
  • C/C++c++ 单线程实现同时监听多个端口

    c++ 单线程实现同时监听多个端口

    这篇文章主要介绍了c++ 单线程实现同时监听多个端口的方法,帮助大家更好的理解和学习使用c++,感兴趣的朋友可以了解下...

    源之缘11542021-10-27
  • C/C++学习C++编程的必备软件

    学习C++编程的必备软件

    本文给大家分享的是作者在学习使用C++进行编程的时候所用到的一些常用的软件,这里推荐给大家...

    谢恩铭10102021-05-08
  • C/C++C语言中炫酷的文件操作实例详解

    C语言中炫酷的文件操作实例详解

    内存中的数据都是暂时的,当程序结束时,它们都将丢失,为了永久性的保存大量的数据,C语言提供了对文件的操作,这篇文章主要给大家介绍了关于C语言中文件...

    针眼_6702022-01-24
  • C/C++详解c语言中的 strcpy和strncpy字符串函数使用

    详解c语言中的 strcpy和strncpy字符串函数使用

    strcpy 和strcnpy函数是字符串复制函数。接下来通过本文给大家介绍c语言中的strcpy和strncpy字符串函数使用,感兴趣的朋友跟随小编要求看看吧...

    spring-go5642021-07-02