V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
WhoCanBeRich
V2EX  ›  问与答

做安卓开发 6 年了,最近业务要切 C++,听说 C++学习很陡峭,求前辈们聊聊

  •  
  •   WhoCanBeRich · 2023-07-22 17:23:02 +08:00 · 1505 次点击
    这是一个创建于 490 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 学习 C++陡峭的原因是啥呢?是因为知识太多很难学吗?

    2. 关于切 C++,我自己是很乐意的,相当于公司再慢慢培养我掌握 C++的能力,听说 C++待遇也会更高一些,学习 C++有什么好的建议吗,或者有什么坑吗?

    3. 我在慕课上找了一门课,看着还行,前辈们帮忙把把关看看可以吗?

    毕竟一个课程看完都要一个月了,提前选下课程不浪费时间。

    https://coding.imooc.com/class/414.html#Anchor

    1. 如果只用手机来学 C++的话,有什么 app 推荐吗?

    自己上下班坐地铁通勤时间比较多,想在路上也巩固学学 C++,

    在微信读书上搜了一下 C++发现都是超级大厚书

    --------->

    提前跪谢大佬前辈们,看到有用的回复一律感谢投币。谢谢

    8 条回复    2023-07-23 22:12:54 +08:00
    iOCZ
        1
    iOCZ  
       2023-07-22 17:50:01 +08:00
    大部头无所谓吧,面向对象基础你已经有了,有些内容可以跳过。经典的要看,然后有一些专门介绍新标准的也要看看,作为补充。
    jack4536251
        2
    jack4536251  
       2023-07-22 18:03:54 +08:00 via Android
    其实看看语法就行了,边做边学
    weidaizi
        3
    weidaizi  
       2023-07-22 18:29:53 +08:00
    * 我十几年前是看《 c++ primer plus 》,算是基础书吧,虽然厚但是挺简单的。c++ 看似很庞大,但是和大多数语言一样,也是 2/8 法则,大多数时候用到的都是 20% 语法。 不要沉迷于复杂的语法,根据工作需求,边学边做吧。
    * c/c++ 如果做应用的话,cmake 要看一下,算是 c/c++ 做应用事实上的构建系统标准工具了,可以理解为 mvn 或者 gradle 之于 Java 的感觉 (现在还有 meson 啥的,但是这个不看也影响不大)。
    * 最后是包管理有 conan 和 vcpkg ,不过这个不会倒也无所谓,比如我平时要么就是用自己写的包管理工具,要么直接把所有依赖全部在工程中源码编
    across
        5
    across  
       2023-07-22 19:33:40 +08:00
    学习曲线为什么陡峭?
    A: 因为 C++包含了 C 的底层操作能力,所以性能上限很高。 另外范式写法比较自由,纯 C 类型面相过程,面相对象,函数式编程,元编程能力都很齐。实际上大部分人只用(也只需要)一部分就可以了。

    最重要的是··· 你没写开发场景,语言特定要针对业务场景取舍。
    smallboy19991231
        6
    smallboy19991231  
       2023-07-22 22:36:14 +08:00 via Android
    想学好 C++就必须拿大部头书来系统的看
    ajaxgoldfish
        7
    ajaxgoldfish  
       2023-07-22 22:39:53 +08:00
    其实我对 C++的了解面向对象在 C++中并不那么重要,以后的发展也会淡化对象编程。
    pocarisweat
        8
    pocarisweat  
       2023-07-23 22:12:54 +08:00
    C++的复杂性来自于:

    1. 像 C 一样,和底层打交道的语言天然就会有很多复杂度。C/C++工具链和系统高度耦合,要有能力在实际环境里部署 C++代码就必须得对 linker 、runtime 这些东西有一定了解。这个可以遇到某个问题了再作为切入点去学习。而且 C/C++编译器本身发展历史很长,了解各种常见选项也是一个历史负担。

    2. C++融合了不同方面的各种语法,包括从 C 拿过来的、面向对象的、玩模板的,一旦这些语法要素融合在一起,语法的复杂程度就会非常高(会变成 N*M 而不是 N+M )。不过如果只是用到某一块语言特性,其实 C++没有那么恐怖。

    主要还得遇到具体情况具体看,抽象地说 C++如何复杂对写 C++代码没什么意义。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2796 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 07:30 · PVG 15:30 · LAX 23:30 · JFK 02:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.