很多程序员在学习编写代码的时候都会用到C++,但是在C++身边还有一个C语言,那么C与C++的真正区别体现在哪里呢?
C++在最初设计时是基于C的,绝大多数语法都兼容。但是,在一些细节却重要的地方,二者差别非常大。C语言不必指定参数类型也可以引用函数,这一点让C语言具有很强的动态特性,而C++去除了这种设计,因为破坏了类型安全。
同理,C语言常用的(void*)转换在C++中也在很大程度上摒弃了,理由也是类型不安全,哪个设计好哪个不好不重要。重要的是:C并不是C++的子集,C++也不是C的超集,它们在语法、设计理念、常用写法方面均有不同,到今天二者的差别越来越大。C++所有新特性,用C都能做出来,无论是面向对象还是函数式编程还是元编程。所以,不要再说C++是面向对象的,而C是面向过程的,这不是本质区别。但C脑补编译器确实也不是轻松的活。
c/c++真正区别一,编译器会帮你生成c++代码,而c编译器不会,一点儿都不加,c++是天生带着范式的语言,核心范式是类型计算,而c几乎没有范式,相比之下C++更像一门工程语言,比如,要实现一个功能,两个语言肯定都能搞定,理论上来说,只要是计算机所具备的能力,用这两门语言都能搞定,只不过是时间周期长短的问题。
此外,语言特性的优劣与程序员水平的高低是两个脱耦问题,而工程实践时更多问题的来源是人的因素。且不说项目与语言的客观适配,开发人员首先得放下成见心。