C++不能说某个特性就能击败所有语言,每个语言都有自己的优势和劣势。而且后发的语言,如Java, Golang, Rust都是针对C++的很多不足进行了改进。
要说最大的优势就是C++时间比较久,所以历史积累很多,各种特性几乎都提供了相关的支持。有很多C++的库,同时各个服务也自然提供给C++的接口,让C++在几乎所有领域都能做到可以用一下(但不是所有领域都值得用,如果另外一种语言实现会更好的话)
谢邀,正是 由于 C++ zero overhead abstraction(零成本抽象) ,C++ 兼具了 C 的性能,和 Java 这类高级语言的开发效率。
C++ 本身上限非常高,可以说在软件开发这块,几乎没有C++做不好和做不到的事。
C++支持四种编程范式
这就是 Java 所不能比拟的。
另外比如析构函数,优雅的RAII带来的确定性自动资源释放。
没有垃圾,也不需要回收;
内存灵活控制且易于性能调优。
随着不断的更新,未来函数式编程,我相信也可以在C++里看到!
C++从基础软件,如操作系统、数据库、工业软件到上层应用都有涉及。
优点就是:
比如这些领域几乎都是 C++:
C++ 虽然上限高,但是对程序员的要求也非常高,所以现在的趋势几乎是能不用 C++ 的领域就不用了,比如 C++ 做后台的逐渐被 Java、Go等取代。
C++ 本身也在不断进化,这是好事,但是对于使用C++的程序员来说也是学习成本,比如C++11一些重要的新东西:
auto 关键字
for-each 循环
右值及移动构造函数 + std::forward + std::move + stl 容器新增的 emplace_back() 方法
std::thread 库、std::chrono 库
智能指针系列(std::shared_ptr/std::unique_ptr/std::weak_ptr),智能指针的实现原理一定要知道,最好是自己实现过
线程库 std::thread + 线程同步技术库 std::mutex/std::condition_variable/std::lock_guard 等
Lamda 表达式(Java 中现在也常常考察 Lamda 表达式的作用)
std::bind/std::function 库
学好 C++也不容易,需要写数万行代码,看很多书,在这推荐一些资料吧:
系统学习可以看看这个回答: 如何系统地学习 C++ 语言?
Effective 系列:《Effective C++》、《More Effective C++》、《Effective STL》、《C++ Primer》、 《STL 源码剖析》和《深度探索 C++ 对象模型》
以上书籍同时建议和侯捷老师的视频配合服用,效果更佳。
直接在 B 站搜索「候捷 C++」即可,主要有以下几个系列:
还有就是可以看看 cppcon:
有帮助的话,记得帮我 @编程指北 点个赞哟~