V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zzzyk
V2EX  ›  C++

C 怎么进阶学 C++呀

  •  
  •   zzzyk · 24 天前 · 1912 次点击

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

    14 条回复    2024-11-28 11:57:02 +08:00
    wutong0369
        1
    wutong0369  
       24 天前   ❤️ 1
    c++各种类的封装由于历史原因,对阅读是十分不友好的,建议可以自己手搓 string 类从具体目的来理解面向对象.
    PTLin
        2
    PTLin  
       24 天前   ❤️ 2
    现代的 c++和 c 几乎没什么关系了,你看作一个全新的语言也没什么问题,不要有会 c 就能速通 c++的错觉就好。
    zjsxwc
        3
    zjsxwc  
       24 天前   ❤️ 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  
       24 天前   ❤️ 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  
       24 天前   ❤️ 1
    首先要消除 modern C++很容易速通这个想法。
    你可以看这个 https://www.learncpp.com/自己学,规范的话可以去看看 cpp guidelines ,其他的善用搜索引擎吧
    cnbatch
        6
    cnbatch  
       24 天前   ❤️ 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  
       24 天前 via Android   ❤️ 1
    body007
        8
    body007  
       24 天前   ❤️ 1
    我是学了下 QT 教程,QT 标准库封装了很多 C++的类和方法,照着源码学习挺快的。
    chuhades
        9
    chuhades  
       24 天前   ❤️ 1
    只用最基础的 cpp ,C+RAII+范型+constexpr ,就足够了。其他的太复杂了
    rocky2024
        10
    rocky2024  
       24 天前   ❤️ 2
    https://parallel101.github.io/cppguidebook/
    先看这个 快速切入进去;
    然后 根据 语法细节 , 翻译你写的 C++ 项目 体会 二者的微妙之处;
    最后 看你 的喜好偏好 ;
    看 LLVM 源码 很有意思的 ; 找里面有意思的看, 看懂就是有收获
    anytk
        11
    anytk  
       24 天前   ❤️ 1
    不如继续深入学 C ,玩转指针,多做应用。C++ 建议就拿来当 C with Class 比较好,只能说我自己脑容量不够,对 C++ 很多特性无法准确理解。越早对 C++ 祛魅 越好。
    hatsuyuki
        12
    hatsuyuki  
       24 天前   ❤️ 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  
       23 天前
    学啥 c++,学 rust 啊
    mascteen
        14
    mascteen  
       23 天前   ❤️ 1
    c/c++现代方法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2378 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 02:26 · PVG 10:26 · LAX 18:26 · JFK 21:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.