当前位置: 首页 > news >正文

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++ 目前在就业市场上仍然占据着重要地位,虽然面临一些新兴语言的竞争,但在特定领域有着不可替代的优势,就业前景依然广阔。

  1. 游戏开发:是 C++ 的传统优势领域,很多大型桌面端游戏的客户端及后台服务器都是用 C++ 开发的。
  2. 嵌入式与物联网:随着物联网的发展,车载系统、工业传感器驱动开发等领域对 C++ 工程师的需求激增。
  3. 人工智能与计算机视觉:人工智能领域中,深度学习框架的底层优化,如 PyTorch 的 C++ 前端,以及计算机视觉与图像识别任务,通常会使用 C++ 来提高运行效率,进行大量的算法实现。
  4. 音视频编解码:音视频编解码的控制代码基本都是用 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++》
在这里插入图片描述
在这里插入图片描述
分享给大家,共同进步。

http://www.dtcms.com/a/477686.html

相关文章:

  • 电力专用多功能微气象监测装置在电网安全运维中的核心价值是什么?
  • 科研快报 |声波“听”见火灾温度:混合深度学习重构三维温度场
  • 从超级大脑到智能毛细血管:四大技术重构智慧园区生态版图
  • 旅游网站建设方案书制作一个网站平台需要多少钱
  • SQL入门:集合运算实战指南
  • Docker 网络类型与容器通信
  • Oracle 21C 部署ogg踩过的坑
  • vue3 中播放.flv视频
  • Oracle AWR报告中Load Profile源码
  • 电子商务网站开发的任务书企业文化心得体会
  • 溧阳网站开发kindeditor代码高亮 wordpress
  • CSS常见问题
  • nginx 负载均衡配置
  • 原生 iOS 开发全流程实战,Swift 技术栈、工程结构、自动化上传与上架发布指南
  • Apache开源许可证:深度解析与实践指南
  • Python Web开发——HTTP协议简介
  • 病理切片可解释性分析-细胞类型、核形态与细胞间相互作用
  • 【C语言】杨辉三角:数学之美与编程实现的完美结合
  • 盐城网站建设策划方案杭州企业求网站建设
  • 基于.NET Framework 4.0的串口通信
  • Mybatis Log Free插件使用
  • asp网站可运行jsp吗专做立体化的网站
  • angie未生成coredump文件
  • 【leetcode刷题007】leetcode116、117
  • 南昌网站推广¥做下拉去118cr如何做实验室网站
  • 从0开始搭建Vue3项目
  • 【知识】Linux将多条指令合并为一条执行
  • 将 MapReduce 程序打成 JAR 包并在 Linux 虚拟机的 Hadoop 集群上运行
  • 06_Miniconda零基础安装配置指南:打造高效的Python开发环境
  • 量子计算与AI融合:材料科学新突破!!