既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
+ - [(条款三)尽可能使用const](#const_13)
+ [(条款四)确定对象被使用之前已被初始化](#_20)
不论你的编程背景是什么,C++都可能让你有点儿熟悉。它是一个威力强大的语言,再夸张一点它好比原子弹,带着众多特性,但是在你可以驾驭其威力并有效运用其特性之前,你必须先习惯C++的办事方法。
(条款一)视C++为一个语言联邦
C++一开始只是在C上面加了一些面向对象的特性,最初的名称C with Classes也反映了这个血缘关系。但当这个语言变得成熟起来,它变得更活跃更无拘无束,更大胆的冒险。Exceptions对函数的结构化带来不同的做法,templates将我们带到了新的设计思考方式,STL则定义了一个前所未有的延伸性的做法。今天的C++已经是个多重泛型编程语言,最简单的方法是将其视为一个由相关语言组成的联邦而非单一语言。为了理解C++,你必须认识其只要的次语言,幸运的是总共只有四个:
- C。说到底C++任是以C为基础。区块、语句、预处理器、内置数据类型、数组、指针等统统来自C。C的局限:没有模板,没有异常,没有重载。
- Object-Oriented C++。这部分也是C with Classes所诉求的:classes(包括构造和析构函数),封装(encapsulation)、继承(inheritance)、多态((polymorphism)、virtual函数、…等等。这一部分是面向对象设计之古典守则在C++上的最直接实施。
- Template C++.这是C++的泛型编程部分,也是大多数程序员经验最少的部分。
- STL。它是temolate程序库,看名称也知道,但它是非常特殊的一个。它对容器、迭代器、算法以及函数对象的规约有极佳的紧密配合与协调,STL有自己特殊的办事方式,所以你必须遵守它的规约。记住这四个语言,当你从某个语言切换到另一个,导致高效守则要求你改变策略时,不要感到惊讶。因此我说,C++并不是一个带有一组守则的一体语言;它是从四个次语言组成的联邦政府,每个语言都有自己的规约。记住这四个次语言理解C++就容易得多了!
(条款二)尽量以const、enum、inline替换#define
这个条款或许改为“宁可以编译器替换预处理器”比较好,因为或许#define不被视为语言的一部分,那么正是它的问题所在。有了const、enums和inline,我们对预处理的需求降低了,但并非完全消除。#include仍是必需品,而#ifdef/#ifnfef也继续扮演控制编译的重要角色。目前还不到预处理器全面引退的时候,你应该明确地给予它更长的假期。
(条款三)尽可能使用const
const是一件奇妙事情是,它允许你指定一个语句约束,而编译器会强制实施这项约束。它允许你告诉编译器和其他程序员某值应该保持不变。
请记住:
- 将某些东西声明为const可以帮助编译器侦测承包户错误用法。
- 编译器强制执行bitwish constness,但你编写程序时应该使用“概念上的常量性”。
- 当const和non-const有着实质性等价的实现时,lingwoinon-const版本调用const版本课避免代码重复。
(条款四)确定对象被使用之前已被初始化
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
T行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**