C++学习录(1):C++入门简介,从零开始
C++入门简介
- 1.C++开始前言
- 2.C++发展历程
- 3.第一个C++程序
- 4.C++路途规划
1.C++开始前言
C++作为一门编程语言,其地位长期处于编程语言排行榜的前三之列,足以看出其广泛的使用及其重要性。
在学习C++之前,绝大多数人的启蒙编程语言都是C语言。C语言是过程化,模块化的语言,适用于较小的项目编程,面对过于庞大的的项目或者复杂的问题时,实现较为困难。因此提出了 “面向对象”的编程思想,支持面向对象的编程语言由此应运而生,C++也随之诞生。
2.C++发展历程
1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。
1979年,贝尔实验室的本贾尼等人试图分析unix内核的时候,试图将内核模块化,于是在C语言的基础上进行扩展,增加了类的机制,完成了一个可以运行的预处理程序,称之为C with classes。
C++ 目前在就业市场上仍然占据着重要地位,虽然面临一些新兴语言的竞争,但在特定领域有着不可替代的优势,就业前景依然广阔。
- 游戏开发:是 C++ 的传统优势领域,很多大型桌面端游戏的客户端及后台服务器都是用 C++ 开发的。
- 嵌入式与物联网:随着物联网的发展,车载系统、工业传感器驱动开发等领域对 C++ 工程师的需求激增。
- 人工智能与计算机视觉:人工智能领域中,深度学习框架的底层优化,如 PyTorch 的 C++ 前端,以及计算机视觉与图像识别任务,通常会使用 C++ 来提高运行效率,进行大量的算法实现。
- 音视频编解码:音视频编解码的控制代码基本都是用 C++ 实现的,包括控制摄像头采集图像、对图像进行编码以及对收到的远端图像进行解码显示等,其中会用到大量的音视频编解码算法。
3.第一个C++程序
#include<iostream>
//这是预处理指令,用于包含标准输入输出流库(iostream),提供了控制台输入输出的功能,比如后续用到的cout就来自这个库。
using namespace std;//声明使用标准命名空间(std)。C++ 标准库中的函数和对象(如cout、endl)都位于 std 命名空间中,这句代码可以避免在使用这些内容时重复添加std::前缀。
int main() {cout << "Hello C++!" << endl;//cout是标准输出流对象,用于向控制台输出信息。//<<是输出运算符,用于将右侧的内容传递给左侧的输出流。//endl表示换行,同时会刷新输出缓冲区。return 0;
}
这是C++中最基础的代码实现,我们输出打印了Hello C++!
在下一篇博客中,我们详细说明C++语法,从概念的实操中去理解语法,利用语法写出正确的C++代码。
4.C++路途规划
-
[1]第一阶段:C++ 基础入门
目标:掌握 C++ 基本语法,能够编写简单程序核心内容
基本语法:
变量、数据类型(int/float/double/char/bool)
运算符(算术 / 逻辑 / 比较 / 赋值)
流程控制:if-else、switch-case、for 循环、while 循环、break/continue
函数:定义、调用、参数(值传递)、返回值、函数声明与实现分离
数组:一维数组、二维数组,数组遍历与基本操作 -
[2] 第二阶段:C++ 核心特性
目标:理解 C++ 面向对象基础,掌握指针与引用核心内容:
面向对象基础:
类与对象(成员变量、成员函数)
访问控制(public/private/protected)
构造函数与析构函数
指针与引用:
指针概念、指针变量、空指针、野指针
引用(&)的用法与区别(指针 vs 引用)
数组与指针的关系,指针算术运算
字符串:C 风格字符串(char [])与 C++ 标准库 string 类 -
[3]第三阶段:面向对象进阶
目标:深入理解面向对象三大特性,掌握 STL 基础核心内容:
面向对象三大特性:
封装:类的设计原则,接口与实现分离
继承:派生类与基类,访问权限控制,虚继承(解决菱形继承问题)
多态:虚函数、纯虚函数、抽象类,动态绑定
STL(标准模板库)入门:
容器:vector(动态数组)、list(链表)、map(键值对)
迭代器(iterator)的使用
常用算法:sort、find、reverse -
[4]第四阶段:C++ 高级特性
目标:掌握 C++11 及以上新特性,理解内存管理核心内容:
内存管理:
动态内存分配(new/delete)与智能指针(unique_ptr/shared_ptr/weak_ptr)
堆与栈的区别,内存泄漏问题
高级语法:
模板(函数模板、类模板)
异常处理(try/catch/throw)
C++11 新特性:auto 关键字、范围 for 循环、lambda 表达式
文件操作:fstream(读 / 写文本文件、二进制文件)
实践项目:
用智能指针实现一个 “图书管理系统”(避免内存泄漏)
编写一个日志工具(将程序运行日志写入文件) -
[5]第五阶段:实战与算法
目标:结合算法训练,提升代码实战能力核心内容:
常用算法:
排序算法(快速排序、归并排序、堆排序)
搜索算法(二分查找、广度优先 BFS、深度优先 DFS)
数据结构进阶:栈、队列、树(二叉树、红黑树)、图
我买了两本书籍用来补充。
一本是《STL源码剖析》,另一本是《Effective C++》
分享给大家,共同进步。