百科问答小站 logo
百科问答小站 font logo



C++的优势有哪些? 第1页

  

user avatar   szstonelee 网友的相关建议: 
      

C++不能说某个特性就能击败所有语言,每个语言都有自己的优势和劣势。而且后发的语言,如Java, Golang, Rust都是针对C++的很多不足进行了改进。

要说最大的优势就是C++时间比较久,所以历史积累很多,各种特性几乎都提供了相关的支持。有很多C++的库,同时各个服务也自然提供给C++的接口,让C++在几乎所有领域都能做到可以用一下(但不是所有领域都值得用,如果另外一种语言实现会更好的话)


user avatar   bian-cheng-zhi-bei 网友的相关建议: 
      

谢邀,正是 由于 C++ zero overhead abstraction(零成本抽象) ,C++ 兼具了 C 的性能,和 Java 这类高级语言的开发效率。

C++ 本身上限非常高,可以说在软件开发这块,几乎没有C++做不好和做不到的事。

C++支持四种编程范式

  • 面向过程(Procedure Programming, PP)
  • 面向对象(Object Oriented Programming, OOP)
  • 泛型编程(Generic Programming,GP)
  • 函数编程(Lambda 表达式实现)

这就是 Java 所不能比拟的。

另外比如析构函数,优雅的RAII带来的确定性自动资源释放。

没有垃圾,也不需要回收;

内存灵活控制且易于性能调优。

随着不断的更新,未来函数式编程,我相信也可以在C++里看到!

C++从基础软件,如操作系统、数据库、工业软件到上层应用都有涉及。

优点就是:

  • 可扩展性强、可移植性强
  • 高效简洁快速、面向对象
  • 强大而灵活的表达能力和不输于C的效率
  • 支持硬件开发

比如这些领域几乎都是 C++:

  1. 游戏领域,几乎全是 C++
  2. 嵌入式、工业控制等领域,几乎都是 C/C++
  3. 后台服务,C++也能做,比如腾讯微信全部服务几乎都构建在C++之上
  4. 安全领域,几乎所有杀毒软件都是C++
  5. win桌面,毫无疑问还是C++为主
  6. 搜索引擎、数据库等,C++
  7. 办公软件 office等,全部C++
  8. 高频交易等,全部C++
  9. 图像处理,3D等
  10. AI框架底层,CUDA开发
  11. .....

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++」即可,主要有以下几个系列:

  • 《C++内存管理》
  • 《STL源码分析》
  • 《C++ STL与泛型编程高级》
  • 《C++11 新特性》

还有就是可以看看 cppcon:

有帮助的话,记得帮我 @编程指北 点个赞哟~




  

相关话题

  老师要求我只能使用C++、C或者Java写算法,如何看这种做法? 
  对于C++ 开发者来说,服务器端开发,游戏开发, 嵌入式软件开发,哪个方向更有前景? 
  C/C++中按值传递比按地址传递更快吗, 引用呢? 
  c/c++语言中,如果不把声明和实现分开,而是直接一起写到头文件中,会有什么不好的影响? 
  你有过哪些被 C++ 摧残的经历? 
  怎么给设备加个usb口读其他设备上数据? 
  C++游戏开发择业前景? 
  如何评价不认为C++三大特性是封装、继承、多态的程序员? 
  C++为何不允许在函数中直接传递数组? 
  c/c++语言中,如果不把声明和实现分开,而是直接一起写到头文件中,会有什么不好的影响? 

前一个讨论
作为普通人,为什么大家看到袁隆平院士逝世会特别难过?
下一个讨论
国内三大巨头 BAT 为何不开发一个浏览器内核?





© 2024-06-02 - tinynew.org. All Rights Reserved.
© 2024-06-02 - tinynew.org. 保留所有权利