C/C++的区别

1、首先C和C++在基础语句上没有太大区别。

我想学过几门编程语言的都有过这种体会,主要在一些语法细节上略有不同,有一楼贴出了for循环语句中变量初始化的不同,c++可以,c不可以,这算一个。这是对“区别”最最最基础的一层认识:语法细节。

2、往上一层,则是多出的语法,关键字。姑且可以认为是小特色。

语法的区别典型的头文件的不同以及名称空间的声明。这里会有和C一样的概念就是作用域,但是两者又有不同。还有就是新增new和delete的语法。在浩瀚的c代码中,遍地都是传递副本或者传递地址,而c++标新立异,多出了一个变量别名的概念,所以就有了按引用传递,实际上更深一点,就是指针的封装实现,而这些只不过是编译器做了你浑然不知而已。一个典型的例子就是auto和explicit关键字,它们体现的是c++显式和隐式转换的概念,但你无需关心怎么实现显式和隐式。

3、再往上,就和C相差越来越远了,重载和虚函数的概念,可以认为是大特色。

一般说语言级别越高,程序员编程更方便,但编译器就会越多出许多额外的工作。可以说C++编译器就是劳模!经典的莫过于c++的重载和虚函数。这是和C完全不同的规定和机制,同名的函数你可以在C++代码中看到铺天盖地,各种操作符重载,各种虚函数声明,各种指针和引用的转换,让很多刚从C跳过来的小白望而生畏。

4、再往上,就是完全独立于C的概念,类,对象和继承。

在面向对象语言中类的概念很常见,但在C++也算是一个标签了,人们认为这是C和C++的最大不同,这是可以理解的,因为代码整体上这是最明显的区别。但不能认为这是“真正的区别”,这只是基于C的拓展。这里有一个实例化的概念,对象是类的实体,而这个实体包含了各种变量和函数,有了类对象就有构造函数,析构函数,复制构造函数以及友元函数的概念…有的人可能会想到结构体,确实两者有相似之处,但结构体却不能有成员函数,只能用函数指针,没有C++规范和方便。在实现上类才是对象编程的核心设计思想,它比结构体更能管理它的成员。有类就有权限和继承,什么公有,私有,保护,单继承,多继承,虚继承,父子类,基类派生类、、、单在继承方面,就比C复杂了好多好多还多!

5、再往上, 可以算接近“真正”的含义的区别了,那就是C++强大的独立特性 ,支持范式编程,如函数模板,模板类,怎么也想不到可以用模板来重用代码,个人觉得这是C++较之C比较伟大的地方!C++还有异常机制,这也是C++的一个特性,还支持元编程,以及强大的STL标准库、、、强大到那你怀疑人生,思考宇宙。。。

6、终极封顶!设计思想和应用场景的区别!

有一个很笼统的回答,就是C和C++的本质区别是面向过程和面向对象。这种回答看似没毛病,但是一看就知道水平不会有多高,应该是道听途说的“主流”看法,忽悠外行的还可以。用过这两门语言编程的人,不难体会,c可以实现面向过程,亦可实现类似的面向对象比如结构体封装,但用法上没有比真正有面向对象的C++高效和方便,只因为C++多了一个类的管理。而C++完全可以向下兼容C,即可以面向过程,也可以面向对象,我们常说C++是一种半面向对象的语言,但它完全可以面向过程。高级的系统编程,多线程,数据结构等等C++也可以做到,只不过出于执行效率和内存占用考虑,C的优势使它趋向于底层,如内核驱动和操作系统,越精简质量越高。对比C++,它更像是基于系统上的上层语言,可以做大型软件,界面开发,游戏开发等等等等。诚然,《C++ Primer Plus》中也说过,把C的繁杂的实现过程抽象成类型并且实例化来管理,是C++设计之初的动机,也就是OOP思想。用户可以自定义类型,并且可以不断往里面添加和拓展,必须修改的时候不需要大改全局,而只需要改局部,这就是OOP的优势之一。两者的侧重点会点不同,C更注重实现逻辑,C++更注重的是程序的整体设计,这就是常说的面向过程和面向对象,其本质还是在其设计思想上,C++更加开放和自由,代码维护和管理更加高效。

综上,我们不难看出,每一个设计细节都不是为了设计而设计,而是为了更好的的去编程而设计,而设计之后不一定在每个领域都占有优势,只能说设计者在设计过程中考虑的管理策略和应用场景不同!当然C++也因其复杂多样和不断迭代的标准遭人诟病,学习曲线陡峭。C入门不难,精通可能也不难,但是想精通C++,就是非常非常非常难!能用到什么程度,就表明对它掌握程度。甚至可以做到随意切换。用的多了,你甚至会认为这俩根本就不是同一门语言,又可以是同一门语言!就是那样一种境界!所以真正的区别的回答肯定会因人而异,可能就是取决于使用的人有几斤几两的区别了。

转载自评论

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值