C++和C语言已经不是一种语言了,现代C++与C不一样了
C++和 C 完全不一样。
学 C++前可以不用学 C,它和 C 的相似度都比不过 Java。在 C++11 之前,C++可以说是包含类的 C,之后就完全不同了。我用 C++开发也有 20 年了,下面我分析一下它们的区别。
1. 首先应用场景基本不同,比如说 C 在系统内核驱动底层协议,而 C++在系统的中间层和应用层协议,还有游戏框架、音视频处理、工业软件等领域都是在使用 C++,应用领域是有明确的区分的。
2. 其次它的语法也不同了,C++虽然兼容 C 语言语法,但如果大量使用普通的指针和函数指针,静态成员函数全局变量,那还是 C 风格的开发方式,不是现代 C++。
C++被广为诟病的内存安全问题,大家就想用 Rust 的去淘汰它,不过显然不可能,但 C++98 的那种开发方式一定要淘汰的。
C++11 开始智能指针可以用于所有的业务,为了提高效率,减少安全问题,C++11 开始增加的移动语义要全面使用,绝大部分 STL 库都是支持移动语义,它减少了内存的复制和指针共享的问题。
函数指针也不要直接使用了,可以使用 C++的各种函数对象,从而能实现函数式编程类型的自动推导 auto 也可以大量使用,可以简化代码,减少变量未初始化的问题。
这是刚给一家大型的电力企业做 C++培训,给他们讲了 C++新的开发方式,他们的旧系统基本都基于 C++98 的。这两年很多企业来找我做 C++11-20 的新的开发方式的培训,大家都想替换到更安全和高效的开发方法。
这次我上线了一个 C++的现代编程的课程,可能我有些粉丝学不了,因为我的很多粉丝我做过调研,就多年开发经验,可能你语言部分已经很熟悉的,这针对一些新手从零开始或者是对语言本身不怎么熟悉的,大家可以学习一下。
最后记得点赞关注夏老师。