当前位置:首页技术教程第一章丨C++编程宝典:快速上手、深入进阶、挑战高级技巧,助你成为编程达人
第一章丨C++编程宝典:快速上手、深入进阶、挑战高级技巧,助你成为编程达人
°
  • 素材类型: 原创-素材
  • 上传时间:

C++ 是一种强大的编程语言,它既支持面向对象的编程风格,也支持过程式的编程风格。以下是 C++ 的基础和提高的一些建议:
基础:
1.变量和数据类型:了解如何声明变量,以及如何使用各种基本数据类型(如 int,float,double,char 等)。
2.控制结构:学习如何使用 if-else,switch,while,for 等控制结构。
3.函数:理解如何定义和调用函数,以及如何传递参数。
4.数组和字符串:了解如何使用数组和字符串。
5.指针和引用:理解指针和引用的概念,以及如何使用它们。
提高:
1.面向对象编程(OOP):理解类、对象、继承、多态等概念,并能够在实际编程中应用它们。
2.STL(标准模板库):学习如何使用 STL 中的容器(如 vector,list,map 等)和算法。
3.异常处理:了解如何使用 try-catch 块来处理异常。
4.文件输入/输出(I/O):了解如何使用 C++ 中的文件 I/O 操作。
5.模板和泛型编程:理解模板的概念,并学习如何使用它们进行泛型编程。
6.多线程编程:理解多线程的概念,并学习如何在 C++ 中进行多线程编程。
7.C++11 和更高版本的新特性:了解并学习 C++11 及更高版本中引入的新特性,如智能指针、lambda 函数、范围 for 循环等。
8.内存管理:理解 C++ 中的内存管理,包括动态内存分配和释放、new 和 delete 操作符等。
9.设计模式:学习并理解常见的设计模式,如单例模式、工厂模式、观察者模式等。
10.代码优化和调试技巧:学习如何优化代码以提高性能,以及如何使用调试工具来查找和修复错误。
以上是一些 C++ 的基础和提高的建议,建议从基础开始学起,然后逐渐深入和提高自己的编程技能。同时,也可以通过阅读相关的书籍、教程和在线课程来进一步深入学习 C++ 的知识和技能。

C++基础与提高

1.综述C++…………………………………………………………………………………………………….1
1.1.作者…………………………………………………………………………………………………………………..1
1.2.历史背景……………………………………………………………………………………………………………1
1.2.1.应“运”而生?运为何?………………………………………………………………………….1
1.2.2.C++发展在大记事……………………………………………………………………………………..1
1.3.应用领域……………………………………………………………………………………………………………2
1.3.1.系统层软件开发………………………………………………………………………………………..2
1.3.2.服务器程序开发………………………………………………………………………………………..2
1.3.3.流戏,网络,分布式,云计算…………………………………………………………………..2
1.3.4.科学计算…………………………………………………………………………………………………..2
1.4.内容…………………………………………………………………………………………………………………..2
1.5.书籍推荐……………………………………………………………………………………………………………2
2.C++对C的扩展…………………………………………………………………………………………………………….4
2.1.类型增强……………………………………………………………………………………………………………4
2.1.1.类型检查更严格………………………………………………………………………………………..4
2.1.2.布尔类型(bool)……………………………………………………………………………………..4
2.1.3.真正的枚举(enum)…………………………………………………………………………………….4
2.2.输入与输出(cincout)…………………………………………………………………………………………..5
2.2.1.cin&&cout………………………………………………………………………………………………..5
2.2.2.格式化………………………………………………………………………………………………………5
2.3.函数重载(functionoverload)………………………………………………………………………………..6
2.3.1.引例………………………………………………………………………………………………………….2.3.2.
2.3.2.重载规则与调用匹配(overload&match)………………………………………………….6
2.3.3.重载底层实现(namemangling)………………………………………………………………7
2.3.4.extern“C”……………………………………………………………………………………………….7
2.4.操作符重载(operatoroverload)…………………………………………………………………………….9
2.5.默认参数(defaultparameters)…………………………………………………………………………9
2.5.1.示例………………………………………………………………………………………………………….9
2.5.2.规则………………………………………………………………………………………………………..10
2.6.引用(reference)………………………………………………………………………………………………….11
2.6.1.引用的概念…………………………………………………………………………………………….11
2.6.2.规则………………………………………………………………………………………………………..11
2.6.3.应用………………………………………………………………………………………………………..11
2.6.4.引用提高…………………………………………………………………………………………………12
2.6.5.引用的本质浅析………………………………………………………………………………………14
2.7.new/delete………………………………………………………………………………………………………….16
2.7.1.new用法:…………………………………………………………………………………………………16
2.7.2.delete用法:………………………………………………………………………………………………17
2.7.3.综合用法…………………………………………………………………………………………………17
2.7.4.关于返回值……………………………………………………………………………………………..18
2.7.5.注意事项…………………………………………………………………………………………………18
2.7.6.更进一步…………………………………………………………………………………………………18
2.8.内联函数(inlinefunction)…………………………………………………………………………………..19
2.8.1.内联………………………………………………………………………………………………………..19
2.8.2.语法………………………………………………………………………………………………………..19
2.8.3.评价………………………………………………………………………………………………………..19
2.9.类型强转(typecast)…………………………………………………………………………………………..20
2.9.1.静态类型转换:………………………………………………………………………………………20
2.9.2.动态类型转换:………………………………………………………………………………………20
2.9.3.常量类型转换:………………………………………………………………………………………20
2.9.4.重解释类型转换:…………………………………………………………………………………..22
2.10.命名空间(namespacescope)…………………………………………………………………………….22
2.10.1.为什么要引入namespace……………………………………………………………………….22
2.10.2.默认NameSpace(global&&function)………………………………………………….22
2.10.3. 语法规则……………………………………………………………………………………………….23
2.11. 系统 string 类…………………………………………………………………………………………………. 26
2.11.1. 定义及初始化………………………………………………………………………………………..26
2.11.2. 类型大小……………………………………………………………………………………………….27
2.11.3. 运算………………………………………………………………………………………………………27
2.11.4. string 类型数组………………………………………………………………………………………27
2.12. C++之父给 C 程序员的建议…………………………………………………………………………….28
3. 封装(Encapsulation)……………………………………………………………………………………………………. 28
3.1. 封装………………………………………………………………………………………………………………… 29
3.1.1. 从 struct 说起…………………………………………………………………………………………..29
3.1.2. 用 class 去封装带行为的类………………………………………………………………………31
3.1.3. 封装的访问属性………………………………………………………………………………………31
3.1.4. 练习封装 list……………………………………………………………………………………………34
4. 类与对象(BigThree &&other)……………………………………………………………………………………… 36
4.1. stack 声明与定义……………………………………………………………………………………………….36
4.2. 构造器(constructor)……………………………………………………………………………………… 37
4.2.1. 定义及意义……………………………………………………………………………………………..37
4.2.2. 参数初始化表………………………………………………………………………………………….38
4.3. 析造器(destructor)……………………………………………………………………………………………. 38
4.3.1. 对象销毁时期………………………………………………………………………………………….38
4.3.2. 析构器的定义及意义……………………………………………………………………………….38
4.3.3. 小结………………………………………………………………………………………………………..39
4.4. 拷贝构造(copy contructor)………………………………………………………………………………… 39
4.4.1. 拷贝构造的定义及意义……………………………………………………………………………39
4.4.2. 拷贝发生的时机………………………………………………………….错误!未定义书签。
4.4.3. 深拷贝与浅拷贝………………………………………………………………………………………40
4.5. this 指针…………………………………………………………………………………………………………… 41
4.5.1. 意义………………………………………………………………………………………………………..41
4.5.2. 作用………………………………………………………………………………………………………..41
4.6. 赋值运算符重载………………………………………………………………………………………………. 42
4.6.1. 发生的时机……………………………………………………………………………………………..42
4.6.2. 定义………………………………………………………………………………………………………..42
4.6.3. 规则………………………………………………………………………………………………………..43
4.7. 返回栈上引用与对象……………………………………………………………………………………….. 43
4.8. 再论拷贝构造与赋值重载……………………………………………………. 错误!未定义书签。
4.9. 案例系统 string 与 MyString……………………………………………………………………………..46
4.9.1. string 的使用…………………………………………………………………………………………….46
4.9.2. MyString 声明………………………………………………………………………………………… 46
4.9.3. 构造………………………………………………………………………………………………………..46
4.9.4. 析构………………………………………………………………………………………………………..47
4.9.5. 拷贝构造(深拷贝)……………………………………………………………………………….47
4.9.6. 赋值运算符重载………………………………………………………………………………………47
4.9.7. 加法运算符重载………………………………………………………………………………………47
4.9.8. 关系运算符重载………………………………………………………………………………………47
4.9.9. []运算符重载…………………………………………………………………………………………… 48
4.9.10. 测试………………………………………………………………………………………………………48
4.10. 课常练习………………………………………………………………………………………………………..49
4.10.1. 实现钟表类……………………………………………………………………………………………49
4.10.2. 分析:…………………………………………………………………………………………………..49
4.10.3. 代码………………………………………………………………………………………………………49
4.11. 栈和堆上的对象及对象数组…………………………………………………………………………… 50
4.11.1. 引例………………………………………………………………………………………………………50
4.11.2. 用 new 和 delete 生成销毁堆对象…………………………………………………………. 51
4.11.3. 栈对象数组……………………………………………………………………………………………51
4.11.4. 堆对象数组……………………………………………………………………………………………51
4.11.5. 结论………………………………………………………………………………………………………51
4.12. 成员函数的存储方式………………………………………………………………………………………51
4.12.1. 类成员可能的组成…………………………………………………………………………………51
4.12.2. 类成员实际的组成…………………………………………………………………………………51
4.12.3. 调用原理……………………………………………………………………………………………….52
4.12.4. 注意事项……………………………………………………………………………………………….53
4.13. const 修饰符………………………………………………………………………………………………….. 53
4.13.1. 常数据成员……………………………………………………………………………………………53
4.13.2. 常成员函数……………………………………………………………………………………………53
4.13.3. 常对象…………………………………………………………………………………………………..54
4.14. static 修饰符………………………………………………………………………………………………….. 54
4.14.1. 类静态数据成员的定义及初始化……………………………………………………………55
4.14.2. 类静态成员函数的定义………………………………………………………………………….56
4.14.3. 综合案例……………………………………………………………………………………………….57
4.15. 指向类成员的指针………………………………………………………………………………………….59
4.15.1. 指向普通变量和函数的指针…………………………………………………………………..59
4.15.2. 指向类数据成员的指针………………………………………………………………………….59
4.15.3. 指向类成员函数的指针………………………………………………………………………….60
4.15.4. 应用提高……………………………………………………………………………………………….62
4.15.5. 指向类静态成员的指针………………………………………………………………………….63
4.16. 作业……………………………………………………………………………………………………………….63
4.16.1. 按需求设计一个圆类……………………………………………………………………………..63
5. 友元(Friend)………………………………………………………………………………………………………………..65
5.1. 同类对象间无私处…………………………………………………………………………………………… 65
5.2. 异类对象间有友员…………………………………………………………………………………………… 65
5.2.1. 友元函数…………………………………………………………………………………………………65
5.2.2. 友元对象…………………………………………………………………………………………………67
5.3. 论友元…………………………………………………………………………………………………………….. 68
5.3.1. 声明位置…………………………………………………………………………………………………68
5.3.2. 友元的利弊……………………………………………………………………………………………..68
5.3.3. 注意事项…………………………………………………………………………………………………68
6. 运算符重载(Operator OverLoad)…………………………………………………………………………………..69
6.1. 重载入门…………………………………………………………………………………………………………. 69
6.1.1. 语法格式…………………………………………………………………………………………………69
6.1.2. 友元重载…………………………………………………………………………………………………69
6.1.3. 成员重载…………………………………………………………………………………………………70
6.1.4. 重载规则…………………………………………………………………………………………………71
6.2. 重载例举…………………………………………………………………………………………………………. 73
6.2.1. 双目运算符例举………………………………………………………………………………………73
6.2.2. 单目运算符例举………………………………………………………………………………………74
6.2.3. 流输入输出运算符重载……………………………………………………………………………78
6.3. 运算符重载小结………………………………………………………………………………………………. 79
6.3.1. 不可重载的运算符…………………………………………………………………………………..79
6.3.2. 只能重载为成员函数的运算符…………………………………………………………………79
6.3.3. 友元还是成员?………………………………………………………………………………………80
6.4. 类型转换…………………………………………………………………………………………………………. 81
6.4.1. 标准类型间转换………………………………………………………………………………………81
6.4.2. 用类型转换构造函数进行类型转换………………………………………………………….81
6.4.3. 用类型转换操作符函数进行转换……………………………………………………………..83
6.5. 运算符重载提高篇…………………………………………………………………………………………… 85
6.5.1. 函数操作符(())—仿函数…………………………………………………………………….. 85
6.5.2. 堆内存操作符 (new delete)………………………………………………………………… 86
6.5.3. 解引用与智能指针(-> /*)……………………………………………………………………. 88
6.6. 作业………………………………………………………………………………………………………………… 91
6.6.1. 设计 TDate 类………………………………………………………………………………………….91
6.6.2. 设计一个矩阵类………………………………………………………………………………………91
7. 继承与派生(Inherit)……………………………………………………………………………………………………. 92
7.1. 引入………………………………………………………………………………………………………………… 92
7.2. 定义………………………………………………………………………………………………………………… 93
7.3. 继承………………………………………………………………………………………………………………… 93
7.3.1. 语法………………………………………………………………………………………………………..93
7.3.2. 继承方式…………………………………………………………………………………………………93
7.3.3. 派生类的组成………………………………………………………………………………………….94
7.4. 派生类的构造和析构……………………………………………………………………………………….. 95
7.4.1. 派生类构造函数的语法:………………………………………………………………………..95
7.4.2. 派生类析构函数的语法………………………………………………………………………….102
7.4.3. 代码实现…………………………………………………………………………………………………96
7.5. 派生类的拷贝构造…………………………………………………………………………………………… 99
7.5.1. 格式………………………………………………………………………………………………………..99
7.5.2. 代码………………………………………………………………………………………………………..99
7.6. 派生类的赋值运算符重载………………………………………………………………………………. 101
7.6.1. 格式………………………………………………………………………………………………………101
7.6.2. 代码………………………………………………………………………………………………………101
7.7. 派生类成员的标识和访问………………………………………………………………………………. 102
7.7.1. 继承方式……………………………………………………………………………………………….103
7.7.2. 派生类成员属性划分为四种:……………………………………………………………….105
7.7.3. 作用域分辨符………………………………………………………………………………………..102
7.8. why public………………………………………………………………………………………………………. 106
7.9. 多继承…………………………………………………………………………………………………………… 109
7.9.1. 继承语法……………………………………………………………………………………………….109
8. 多态(PolyMorphism)……………………………………………………………………………………………..117
8.1. 浅析多态的意义…………………………………………………………………………………………….. 117
8.2. 赋值兼容(多态实现的前提)……………………………………………………………………………. 117
8.2.1. 规则………………………………………………………………………………………………………117
8.3. 多态形成的条件…………………………………………………………………………………………….. 119
8.3.1. 虚函数…………………………………………………………………………………………………..119
8.3.2. 纯虚函数……………………………………………………………………………………………….120
8.4. 案例………………………………………………………………………………………………………………. 121
8.4.1. 基于 qt 覆写鼠标事件…………………………………………………………………………….121
8.4.2. 企业员工信息管理系统………………………………………………………………………….130
8.4.3. cocos 跨平台入口分析…………………………………………………………………………….134
8.5. 多态实现的深入分析……………………………………………………………………………………… 137
9. 异常……………………………………………………………………………………………….错误!未定义书签。
10. IO 流……………………………………………………………………………………………. 错误!未定义书签。
11. STL………………………………………………………………………………………………………………………….175
12. C11…………………………………………………………………………………………………………………………. 176
13. Boost………………………………………………………………………………………………………………………. 177
14. 附录………………………………………………………………………………………………………………………..178
14.1. 运算符优先级……………………………………………………………………………………………….178
14.2. ASCII 码……………………………………………………………………………………………………… 178
1. 综述C++
1.1. 作者
1982 年,美国 AT&T 公司贝尔实验室的 Bjarne Stroustrup 博士在 c 语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与 c 语言的渊源关系,
它被命名为 C++。而 Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)博士被尊称为 C++语言之父。
第一章丨C++编程宝典:快速上手、深入进阶、挑战高级技巧,助你成为编程达人
1.2. 历史背景
1.2.1. 应“运”而生?运为何?
C 语言作为结构化和模块化的语言,在处理较小规模的程序时,比较得心应手。但是当
问题比较复杂,程序的规模较大的时,需要高度的抽象和建模时,c 语言显得力不从心。为了解决软件危机,20 世纪 80 年代,计算机界提出了 OOP(object oriented programming)
思想,这需要设计出支持面向对象的程序设计语言。Smalltalk 就是当时问世的一种面向对象的语言。而在实践中,人们发现 c 是语此深入人心,使用如此之广泛,以至于最好的办法,不是发明一种新的语言去取代它,而是在原有的基础上发展它。在这种情况下 c++应运而生,最初这门语言并不叫 c++而是 c with class (带类的 c)。
1.2.2. C++发展大记事
1983 年 8 月, 第一个 C++实现投入使用
1983 年 12 月,Rick Mascitti 建议命名为 CPlusPlus,即 C++。
1985 年 2 月, 第一个 C++ Release E 发布。
10 月,CFront 的第一个商业发布,CFront Release 1.0。
10 月,Bjarne 博士完成了经典巨著 The C++ Programming Language 第一版
1986 年 11 月,C++第一个商业移植 CFront 1.1,Glockenspiel。
1987 年 2 月, CFront Release 1.2 发布。
11 月,第一个 USENIX C++会议在新墨西哥州举行。
1988 年 10 月,第一次 USENIX C++实现者工作会议在科罗拉多州举行。
1989 年 12 月,ANSI X3J16 在华盛顿组织会议。
1990 年 3 月, 第一次 ANSI X3J16 技术会议在新泽西州召开.
1990 年 5 月, C++的又一个传世经典 ARM 诞生。 1990 年 7 月, 模板被加入。 1990 年 11 月,异常被加入。
1991 年 6 月, The C++ Programming Language 第二版完成。
1991 年 6 月, 第一次 ISO WG21 会议在瑞典召开。
1991 年 10 月,CFront Release 3.0 发布。
1993 年 3 月, 运行时类型识别在俄勒冈州被加入。
1993 年 7 月, 名字空间在德国慕尼黑被加入。
1994 年 8 月, ANSI/ISO 委员会草案登记。
1997 年 7 月, The C++ Programming Language 第三版完成。
1997 年 10 月,ISO 标准通过表决被接受
1998 年 11 月,ISO 标准被批准。
1.3. 应用领域
如果项目中,既要求效率又要建模和高度抽像,那就选择 c++吧。
1.3.1. 系统层软件开发
C++的语言本身的高效。
1.3.2. 服务器程序开发
面向对像,具有较强的抽像和建模能力。
1.3.3. 流戏,网络,分布式,云计算
效率与建模
1.3.4. 科学计算
比如大名鼎鼎的 ACE 等科学类库。
1.4. 内容
C++语言的名字,如果看作 c 的基本语法,是由操作数 c 和运算符后++构成。C++是本身这门语言先是 c,是完全兼容 c.然后在此基础上++。这个++包含三大部分,c++对 c 的基础语法的扩展,面向对像(继承,封装,多态),STL 等。
1.5. 书籍推荐
第一章丨C++编程宝典:快速上手、深入进阶、挑战高级技巧,助你成为编程达人第一章丨C++编程宝典:快速上手、深入进阶、挑战高级技巧,助你成为编程达人第一章丨C++编程宝典:快速上手、深入进阶、挑战高级技巧,助你成为编程达人

由于篇幅过大请看下一章节精讲,附件会在最后一期文章精讲中提供下载

温馨提示:

文章标题:第一章丨C++编程宝典:快速上手、深入进阶、挑战高级技巧,助你成为编程达人

文章链接:https://www.xiciw.com/jsjc/907.html

更新时间:2024年01月29日

本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:xiciw#qq.com我们将第一时间处理!

资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。

                               

所有资源仅限于参考和学习,版权归原作者所有,更多请阅读菜鸟资源服务协议

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
Linux教程Macos教程Windows教程技术教程

轻松搭建幻兽帕鲁服务器:(Palworld)一键开服指南

2024-1-25 19:29:24

技术教程

第二章丨C++编程宝典:快速上手、深入进阶、挑战高级技巧,助你成为编程达人

2024-1-27 21:06:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索