如何系统的学习c++

news/2024/6/3 7:28:37 标签: c++, c
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="htmledit_views">

center;">c="https://img-blog.csdnimg.cn/20210508180613109.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3OTQwODA0,size_16,color_FFFFFF,t_70" width="299" />

c">目录

c" style="margin-left:0px;">一. 入门

c" style="margin-left:40px;">1.1 C语言基础

c%2B%2B%E5%9F%BA%E7%A1%80%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B-toc" style="margin-left:40px;">1.2 c++基础

二、提高

c" style="margin-left:0px;">三、进阶

c" style="margin-left:40px;">3.1. STL 源码

c" style="margin-left:40px;">3.2 对象模型

c" style="margin-left:0px;">四. 编程基础四大件


c" />

二、提高

三、进阶

1. STL 源码

2 对象模型

四. 编程基础四大件


 

大家好࿰c;我是羽峰࿰c;一个c++刚入门的小白࿰c;本文整理了一些c++学习路线࿰c;当然自己也在路上࿰c;期待与您一起成长。如有需要࿰c;欢迎关注“羽峰码字”公众号࿰c;我们一起畅聊人生。

学习C++ 可以分为几个阶段

一. 入门

1.1 C语言基础

首先是c语言基础

  • 基础的语法:变量、条件、循环、字符串、数组、函数、结构体等
  • C语言重点:指针、内存管理

推荐书籍:《C Primer Plus》、《C和指针》、《C专家编程》

当然这只是c++基础࿰c;理解就好࿰c;当然࿰c;指针和内存管理是很重要的࿰c;建议多理解࿰c;多看看。接下来我们重点理解c++一些东西

c%2B%2B%E5%9F%BA%E7%A1%80%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B%E2%80%8B">1.2 c++基础

c++基础࿰c;可以看b站黑马程序员c++视频࿰c;还可以看这个网址:https://github.com/Light-City/CPlusPlusThings

这个过程你需要了解并且掌握一些基本概念

ckquote>

变量、常量、类型、循环、判断、数组、字符串、对象、输入输出等࿰c;

c++面向对象编程:封装࿰c;继承࿰c;多态࿰c;

C++ 中一些特有的东西࿰c;比如命名空间 namespace、引用、模板等。

最后就是一些 STL 中的类库࿰c;比如 string、vector、find 等。

ckquote>

了解基础之后࿰c;就是敲代码了࿰c;理论和实践是不一样的࿰c;特别是c++,理论很懂࿰c;但实操会有各种bug࿰c;敲代码可以更好的理解理论中一些自己忽略的东西。这里推荐一个网址:

<code>https://www.codewars.com/kata/search/cppcode>࿰c;有点像 LeetCode 刷算法题一样࿰c;这里针对每一个语法知识点都有一系列的练习题可供选择。

这里在辅助一下以下基本书࿰c;主推前两本。

  • 《Accelerated C++》(美国斯坦福大学的经典教材)

  • 《C++ Primer》(大而全)

  • 《The C++ Programming Language》(C++之父 Bjarne Stroustrup 所著)

《Accelerated C++》《C++Primer》适合初学者;

《C++ Programming language》 是C++专家自学指南࿰c;顾名思义࿰c;适合有较深厚 C++ 功底的读者。

这几本书是一个辅助工具࿰c;可以对不懂的地方查漏补缺࿰c;不会哪里看哪里。也可以看着目录࿰c;看一些自己感兴趣的章节࿰c;没有必要从第一页开始挨着挨着读。

多用代码去验证自己的想法࿰c;尤其是指针、引用、构造、析构这些地方࿰c;可以去刷力扣题࿰c;或者github上一些开源的小项目。

学习 C++ 以及日常开发一定要记得这几个网站࿰c;可以随时查阅一些语法的用法和标准库:

  • http://cplusplus.com/

  • https://en.cppreference.com/w/

  • https://gcc.gnu.org/

二、提高

基础之后就是提高了࿰c;提高篇就是优化自己的代码效率࿰c;命名规范࿰c;内存管理࿰c;数据传递方式࿰c;以及一些使用技巧。由于 C++ 是一门系统级编程的语言࿰c;你需要掌握一些 OS 方面的知识才能更好的使用。

尤其是内存编译链接这一块࿰c;比如堆、栈、静态链接、动态链接等等。

还有一些 C++ 里比较特殊的概念࿰c;比如 RAII 的资源管理方式、值语义与生命期、引用、右值引用等等。

这些东西似乎没有一本很系统的书籍可以帮助你掌握࿰c;只能在不同的书里吸收完善。

这一块࿰c;我也在学习࿰c;这里给出一些在这些方面有帮助的书籍:

  • 《Effective》三部曲

ckquote>

一言概括࿰c;就是帮助你快速习得一些 C++ 里正确的姿势。

这里推荐b站侯捷老师一些视频࿰c;可以辅助看看࿰c;应该会有不一样的效率。

ckquote>
  • 《程序员自我修养》& 《CSAPP》

ckquote>

帮助你掌握一些系统级编程的知识。如内存管理、堆栈、链接这类在 C、C++ 中极其重要的概念。

ckquote>
  • 《Linux多线程服务端编程》

ckquote>

这本书严格来说不是纯讲 C++ 的。

但是里面会有一些章节࿰c;关于 C++ 多线程编程、锁、线程安全、C++ 一些工程实践经验还不错。

ckquote>
  • 《Google C++ Style Guide》

ckquote>

谷歌的 C++ 代码规范࿰c;写代码是一件专业的事࿰c;把代码写得漂亮、专业也是一项能力。

谷歌的代码规范算是 C++ 领域一个标杆了。

ckquote>

三、进阶

3.1. STL 源码

侯捷老师说:源码之下࿰c;了无秘密。所以源码一定很重要࿰c;避免一些杂七杂八东西来浪费自己的时间

为了更好的使用 STL࿰c;一个方法就是阅读 STL 源码 或者掌握部分实现:

《STL源码剖析》

ckquote>

这本书讲解了 STL 五大组件的底层实现。

包括内存管理、各类容器的数据结构实现、算法的实现等。

建议列为必读࿰c;可以帮助深入理解 STL 底层。

其中也有很多面试常考的知识点࿰c;如内存池、traits 技法、vector 动态扩容、set、map 等实现原理等。

ckquote>

3.2 对象模型

《深度探索C++对象模型》

ckquote>

这本书其实就是围绕一个点:C++ 里的对象是在内存中是如何组织的。

ckquote>

这是每个章节内容:

  • 关于对象

  • 构造函数语意学

  • Data语意学

  • Function语意学

  • 构造、解构、拷贝语意学

  • 执行期语意学

四. 编程基础四大件

基础四大件包括:数据结构和算法计算机网络操作系统设计模式

这跟学什么编程语言、后续从事什么编程方向均无关࿰c;只要做编程开发࿰c;这四个计算机基础就无法避开。可以这么说࿰c;这基础四大件真的比编程语言重要!!!

1、数据结构和算法

可以说这个直接决定了面试的成败!几种基础数据结构类型得烂熟于心࿰c;比如:字符串、链表、二叉树、堆、栈、队列、哈希等;基本的几大算法也要了如指掌࿰c;比如查找、排序、动态规划、分治等等。

建议LeetCode多刷题。

ckquote> 参考资料: 《大话数据结构》、《算法》、《剑指offer》《LeetCode刷题》 ckquote>

2、计算机网络

此处的计算机网络指的就是TCP/IP协议栈࿰c;可以说它是当下互联网通信的基石࿰c;无论如何一定要对TCP/IP的协议栈了如指掌࿰c;主要就是学习和掌握原理࿰c;包括:ARP协议、IP协议、ICMP协议、TCP和UDP协议、DNS协议、HTTP协议、HTTPS协议

ckquote> 推荐书籍: 《TCP/IP详解》 ckquote>

3、操作系统

该部分重点包括:进程和线程的相关原理、内存相关原理

ckquote> 推荐书籍:《深入理解计算机系统》 ckquote>

4、设计模式

倒不需要23种设计模式全部记住࿰c;常见的几个如:单例模式、工厂模式、代理模式、策略模式、模板方法模式建议熟练于心。

ckquote> 推荐书籍:《大话设计模式》、《设计模式之禅》 ckquote>

 

这里借鉴了公众号:编程指北 大佬的公共号的一篇文章࿰c;欢迎关注该大佬。还有知乎上一些回答࿰c;如有侵权࿰c;欢迎告知。

写在最后࿰c;我是是一名小白࿰c;期待与您一起成长。

我是羽峰࿰c;公众号“羽峰码字”࿰c;欢迎来撩

cle>

http://www.niftyadmin.cn/n/1246703.html

相关文章

Opencv 2.4.9在Ubuntu下的配置安装

Opencv 2.4.9在Ubuntu下的配置安装

校招算法面试中一些常见问题

大家好&#xff0c;我是羽峰&#xff0c;今天整理了一下校招面试中常见算法题&#xff0c;看看目录中这些问题你是否了解呢&#xff0c;能完整的答出来吗&#xff1f; 1. 权值初始化方法 常量初始化&#xff08;constant&#xff09; 高斯分布初始化&#xff08;gaussian&…

ubuntu 安装tar.gz包

安装方法&#xff1a;1.进入包的目录cd /home/mifan/app2. tar xvfz &#xff0c;xxxxx-1.4.tar.gz //先将软件解压缩并解包3. ./configure //进入该软件的包4. make5.make install到这一步的时候&#xff0c;如果说权限不够&#xff0c;…

应届生应该如何准备校招

大家好&#xff0c;我是羽峰&#xff0c;今天要和大家分享的是应届生应该如何准备校招&#xff0c;希望该文章对一些今年要找工作的朋友有一些帮助。 还是老话&#xff0c;我是羽峰&#xff0c;希望我所分享的文章能为您及更多的朋友带来帮助。欢迎转发或转载呀&#xff01; 目…

【手把手教你】搭建神经网络(图像分割)

大家好&#xff0c;我是羽峰&#xff0c;今天要给大家分享的是一个图像分割网络&#xff0c;文章会把整个代码进行分割讲解&#xff0c;完整看完&#xff0c;相信你一定会有所收获。 目录 1. 认识图像分割 2. 基于深度学习的分割 1. Oxford-IIIT Pet 数据集介绍 2. 下载 O…

Ubuntu16 创建桌面快捷方式

1 在/usr/share/applications 目录下&#xff0c;新建以软件名称命名的文件software_name.desktop $ vim /usr/share/applications/eclipse.desktop 2 编辑eclipse.desktop [Desktop Entry] EncodingUTF-8 Nameeclipse CommentEclipse IDE Exec/usr/local/eclipse/eclipse …

520表白神器 —— 一个python就够了(附爬取小姐姐私房照的程序哦)

大家好&#xff0c;我是羽峰&#xff0c;今天给大家分享点有意思的事情&#xff0c;每年的520&#xff0c;521&#xff0c;又要到了。给女朋友买礼物是否伤透了你的脑筋。哈哈&#xff0c;来&#xff0c;让我教你&#xff0c;一个python搞定她&#xff0c;如果想表白&#xff0…

Ubuntu16.04 使用PPA安装JDK8

安装Java 8 ( 支持 Ubuntu 10.04 - Ubuntu 16.04 ) 1、如果你在 Ubuntu 软件中心安装过 OpenJDK&#xff0c;请先使用如下命令将其删除&#xff1a; sudo apt-get purge openjdk* 2、添加 PPA 源 sudo add-apt-repository ppa:webupd8team/java 3、更新下源数据库 sudo …