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

01 C++概述


一、C++语言发展史

  1. 起源与演进
    • 1960s:剑桥大学Martin Richards开发BCPL语言,用于系统软件开发。

    • 1970年:贝尔实验室Ken Thompson在BCPL基础上发明B语言。

    • 1972年:Dennis Ritchie和Brian Kernighan设计出C语言,兼具高级语言与汇编特性。

    • 1980年:贝尔实验室开始扩展C语言为“带类的C”(C with Classes)。

    • 1983年:正式命名为C++,支持面向对象编程。

    • 1994年:ANSI C++标准草案制定。

    • 1998年:推出ANSI/ISO C++标准(C++98),成为现代C++的基础。

  2. 意义
    • C++在C语言基础上引入面向对象机制,同时保留高效性、可移植性,成为系统级开发和复杂应用的主流语言。


二、C与C++的核心区别

  1. C语言特点
    • 优势:结构化编程、高效灵活、可移植性强,适合系统程序和科学计算。

    • 缺陷:

    ◦ 类型检查较弱,安全性不足。

    ◦ 缺乏代码重用机制(如类、模板)。

    ◦ 难以支持大规模软件开发。

  2. C++的改进
    • 扩展C的功能:增强类型检查、引入引用、异常处理、模板等。

    • 面向对象特性:封装、继承、多态。

    • 泛型编程:通过模板(类模板、函数模板)实现代码通用性。

    • 兼容性:C是C++的子集,C++完全兼容C语法。


三、面向对象编程(OOP)思想

  1. 核心理念
    • 程序 = 对象 + 消息:以对象为中心,通过消息传递实现交互。

    • 对比面向过程:

    ◦ 面向过程:程序 = 数据 + 算法(按步骤分解任务)。

    ◦ 面向对象:通过对象的属性和行为模拟现实问题(如“冰箱”对象封装开门、关门等操作)。

  2. 三大核心特征
    • 封装、继承、多态。


四、封装(Encapsulation)

  1. 定义
    • 将数据(属性)和操作(方法)绑定为独立单元(类),隐藏内部细节,仅暴露接口。

  2. 作用
    • 提高安全性(如隐藏电路细节的录音机)。

    • 简化外部使用,增强模块化。


五、继承(Inheritance)

  1. 定义
    • 子类继承父类的属性和方法,实现代码重用和层次化设计。

    • 例:孩子类继承父母类的特征和行为。

  2. 意义
    • 减少冗余代码,支持增量开发,提升软件可维护性。


六、多态(Polymorphism)

  1. 定义
    • 同一操作在不同对象中具有不同实现方式,分为:

    ◦ 编译时多态:通过函数重载、运算符重载实现。

    ◦ 运行时多态:通过虚函数(Virtual Function)实现动态绑定。

  2. 示例
    • 函数重载:同名函数根据参数类型/数量执行不同操作。

    • 运算符重载:重新定义运算符行为(如+用于复数加法)。

    • 虚函数:基类指针调用派生类方法,实现接口统一。


七、C++的其他关键特性

  1. 异常处理
    • 通过try/catch机制管理运行时错误,增强程序健壮性。

  2. 模板(泛型编程)
    • 编写与数据类型无关的通用代码,如标准模板库(STL)。

  3. 命名空间
    • 避免命名冲突,逻辑分组代码(如std命名空间)。


八、总结
C++以C语言为基础,通过引入面向对象、泛型编程等机制,解决了C语言在大型项目中的局限性。其核心优势在于:
• 高效性:保留C语言的底层操作能力。

• 扩展性:通过封装、继承、多态支持复杂系统设计。

• 灵活性:模板和重载机制提升代码复用性。

• 标准化:ANSI/ISO标准确保跨平台兼容性。

C++广泛应用于操作系统、游戏引擎、嵌入式系统等领域,是现代软件工程的重要工具。

相关文章:

  • 2025 SAP专精特新企业高峰论坛 | 工博科技以SAP公有云+AI赋能新质生产力​
  • 15、项目搭建:绘制城堡蓝图——React 19 工程配置
  • 在android 系统上qnn sdk转换,运行模型示例
  • Shell脚本-嵌套循环应用案例
  • 塔能科技:点亮节能之光,赋能工厂与城市
  • 013几何数学——算法备赛
  • 科技助力防灾减灾:卫星电话走进应急救援队伍
  • Python创意爱心代码分享指南
  • ​LangChain、LlamaIndex、MCP、Spring AI、Ollama​ 和 ​DeepSeek​ 的定义、关系及典型架构设计
  • 完美解决.NET Framework 4.0 中 System.Drawing 库不支持 WebP 格式的图像处理
  • Docker 获取 Python 镜像操作指南
  • Dots:动态实现GPUECSAnimationBaker的受击变红效果
  • 不同参数大小的DeepSeekR1模型对Java中new FileInputStream(“test.txt“).seek(100);语法错误的检查
  • WPF之Button控件详解
  • Golang|外观模式和具体逻辑
  • 【杂谈】-人工智能驱动的网络安全威胁:新一代网络钓鱼
  • 第33周JavaSpringCloud微服务 分布式综合应用
  • 系统架构师2025年论文《论面向对象的软件设计——UML 在面向对象软件架构中的应用》
  • GpuGeek全面接入智谱GLM Z1系列推理模型!!
  • VLM-E2E:通过多模态驾驶员注意融合增强端到端自动驾驶——论文阅读
  • 我国将开展市场准入壁垒清理整治行动
  • 黄晓丹:用“诗心”找到生存的意义
  • 周口一乡镇公务员“被老赖”,两年4场官司均败诉,市监局将线索移送公安厅
  • 加拿大温哥华一车辆冲撞人群,造成多人伤亡
  • 经济日报金观平:充分发挥增量政策的经济牵引力
  • 江苏、安徽跨省联动共治“样板间”:进一扇门可办两省事