C 怎么进阶学 C++呀 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zzzyk
V2EX    C++

C 怎么进阶学 C++呀

  •  
  •   zzzyk 2024-11-27 16:07:45 +08:00 4037 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    只会 C 语言想进阶学学 C++,要怎么学,那些简单的语法看了好像问题都不大(跟 C 基本一样),但是到了那些面向对象的那些,就完全懵逼了,看不太懂。有什么好的教程或者数据推荐吗。

    15 条回复    2025-02-28 13:35:01 +08:00
    wutong0369
        1
    wutong0369  
       2024-11-27 16:19:14 +08:00   1
    c++各种类的封装由于历史原因,对阅读是十分不友好的,建议可以自己手搓 string 类从具体目的来理解面向对象.
    PTLin
        2
    PTLin  
       2024-11-27 16:27:20 +08:00   2
    现代的 c++和 c 几乎没什么关系了,你看作一个全新的语言也没什么问题,不要有会 c 就能速通 c++的错觉就好。
    zjsxwc
        3
    zjsxwc  
       2024-11-27 16:29:01 +08:00   1
    看你兴趣爱好呗,遇到问题直接问豆包 gpt 等 ai 工具,很方便

    比如 chromium 浏览器的源码
    https://github.com/chromium/chromium/blob/main/net/base/upload_file_element_reader.h

    比如 octave 的源码
    https://github.com/gnu-octave/octave/blob/default/liboctave/array/dMatrix.h
    kagenomirai
        4
    kagenomirai  
       2024-11-27 16:55:24 +08:00   1
    理解不了 C++ 的面向对象,分两种情况吧。
    一是理解不了 C++ 语法,像什么 virtual friend 这种,还有各种 practice 像 RAII rule of five 什么的。这种可以自己实现个容器类试试,看看 effective C++ 和 CppCon 的 back to basic ,不过最好别深究,标准可以看到死。
    另外推荐一下 StackOverflow 上有个 C++ 的书单: https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list

    二是理解不了面向对象这种抽象方式,疑惑什么是面向对象,为什么要面向对象,我像 C 一样写一堆函数不行吗,等等此类问题,我想到最好的书应该就是 SICP 了(看 JS 版顺便还能入门 JS )我只大概翻过,这本书对如何用抽象来进行编程做了系统的解释,特别适合新手。不看这本书也可以多写写代码,时间久了也能领悟书上的内容。
    伴随着 SICP 的还有伯克利的课程 CS61A 这几年换了教材 Composing Programs 用 python 写的,和 SCIP 差不多。
    最后推荐一下 csdiy.wiki (计算机自学指南)这个网站吧。
    donaldturinglee
        5
    donaldturinglee  
       2024-11-27 17:00:35 +08:00   1
    首先要消除 modern C++很容易速通这个想法。
    你可以看这个 https://www.learncpp.com/自己学,规范的话可以去看看 cpp guidelines ,其他的善用搜索引擎吧
    cnbatch
        6
    cnbatch  
       2024-11-27 17:15:20 +08:00   1
    这个应该发到 C++节点吧

    不知道你对 C 的语言熟悉到了哪个标准。个人建议,先熟悉一下 C11 、C23 的内容,过一遍就行,因为新标准不少内容跟 Modern C++很接近。

    然后买一本 C++发明人的教程看一看(The C++ Programming Language ,国内有中文版),搞清楚基础规则( RAII 、重载之类的),对 C++提供的语法、容器、工具有个了解,然后再做一些简单的程序,边做边学。

    前面提到的 https://www.learncpp.com/ 也是不错的资源

    至于面向对象嘛,你就先当作是 struct 当中内置 function ,然后弄着弄着就能理解 virtual 啊、Inheritance 之类的玩意。
    老实说,我个人很少用到纯粹的“面向对象”,virtual 和继承都很少用到,非用不可时才用,可用可不用时就不用。
    thorneLiu
        7
    thorneLiu  
       2024-11-27 17:21:52 +08:00 via Android   1
    body007
        8
    body007  
       2024-11-27 17:36:57 +08:00   1
    我是学了下 QT 教程,QT 标准库封装了很多 C++的类和方法,照着源码学习挺快的。
    chu1337
        9
    chu1337  
       2024-11-27 17:38:35 +08:00   1
    只用最基础的 cpp ,C+RAII+范型+constexpr ,就足够了。其他的太复杂了
    SuzhaharCan
        10
    SuzhaharCan  
       2024-11-28 09:10:45 +08:00   2
    https://parallel101.github.io/cppguidebook/
    先看这个 快速切入进去;
    然后 根据 语法细节 , 翻译你写的 C++ 项目 体会 二者的微妙之处;
    最后 看你 的喜好偏好 ;
    看 LLVM 源码 很有意思的 ; 找里面有意思的看, 看懂就是有收获
    anytk
        11
    anytk  
       2024-11-28 09:29:01 +08:00   1
    不如继续深入学 C ,玩转指针,多做应用。C++ 建议就拿来当 C with Class 比较好,只能说我自己脑容量不够,对 C++ 很多特性无法准确理解。越早对 C++ 祛魅 越好。
    hatsuyuki
        12
    hatsuyuki  
       2024-11-28 09:30:44 +08:00   1
    先看这本书《现代 C++ 教程 高速上手 C++ 11/14/17/20 》 https://changkun.de/modern-cpp/
    再对照 C++ 参考手册 https://zh.cppreference.com/w/%E9%A6%96%E9%A1%B5
    fffq
        13
    fffq  
       2024-11-28 10:40:42 +08:00
    学啥 c++,学 rust 啊
    mascteen
        14
    mascteen  
       2024-11-28 11:57:02 +08:00   1
    c/c++现代方法
    lleon
        15
    lleon  
       274 天前
    如果只是用 C++刷刷算法题,看什么书或资料合适啊。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2654 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 09:10 PVG 17:10 LAX 01:10 JFK 04:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86