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

C++:知识点小结

1. 简述C++与C语言的区别?

C++和C语言在设计理念、语法特征、应用场景等都有其各自的特征。

核心定位 理念设计

  1. C语言的核心定位是面向过程的结构编程语言,C++支持多凡事混合汇编语言(C++的核心定位是面向对象)
  2. C语言以过程为核心,通过函数实现每个步骤,强调代码的高效性和硬件操控能力,追求“轻量、简洁”;C++是在C语言的基础上以“对象”为核心,将数据(属性)和操作(方式)封装在一起,强调代码的复用性、可维护性、扩展性同时保留对硬件的直接操控能力。

编程范式支持:

C语言是面向过程,代码重复依赖函数封装或宏定义,但是在大型项目当中就容易出现“代码冗余、耦合度高”的问题。

C++是面向对象对象编程包括封装、继承、多态

其中封装是通过类进行封装在一起、通过public/private/protected控制访问权限,避免数据被随意修改。

继承主要是子类可以继承父类的属性和方法,减少代买的冗余量。

多态就是同一接口(如父类的虚函数)在不同子类中可实现不同逻辑

**内存管理方式:

二者均支持手动内存管理,但 C++ 新增了更便捷、安全的方式:

  • C 语言:仅依赖标准库函数

    动态内存分配 / 释放需通过 malloc()、calloc()、realloc() 分配内存,free() 释放内存,且需手动计算内存大小(如 int* p = (int*)malloc(10 * sizeof(int))),易出现 “内存泄漏”(忘记 free())或 “野指针”(释放后未置空)。

  • C++ 语言:兼容 C 的函数,同时新增 “运算符”

    动态内存分配用 new 运算符(如 int* p = new int[10]),释放用 delete 运算符(如 delete[] p);new/delete 会自动调用对象的构造函数 / 析构函数(初始化 / 清理资源),而 malloc()/free() 仅操作内存,不处理对象生命周期,更安全。

应用场景不同

C语言对执行效率、占用内存要求极高,需要直接操控的场景,比如:操作系统内核(Linux内核)、嵌入式开发(如单片机程序)、驱动程序、底层工具(如编译器前段)

C++需要复杂逻辑、高可维护性,同时兼容效率大的中大型项目,比如游戏开发、服务器开发桌面应用等。

总之C语言适合底层、高效、简单的应用场景,核心是过程;

C++是在兼容C的高效的基础之上同时实现面向对象、泛型等特性支持复杂项目,核心是对象和复用。

2.什么是面向对象的编程思想

面相对象编程简称OOP,全称object oriented programming。就是以对象为核心的编程思想,它将现实世界中的事物抽象为程序中的“对象”,通过对象之间的交互来解决问题。核心及时将数据(属性)和操作数据的行为(方法)封装在一起,强调从“现实世界的实体”出发设计程序,而非单纯按照步骤(面向过程)解决问题。

面向对象四大核心特征

封装

封装主要指的是将对象属性(数据)和方法(操作)捆绑在一起,将他们形成一个独立的类(Class) 隐藏内部实现细节,只能通过公开的开口实现与外部的交互。这样可以保护数据提高数据的安全性,降低代码耦合度。

继承

继承主要发生在父子类当中

当一个类继承了另一个类的属性和方法时就成继承的类为子类,被继承的类为父类。子类可以在父类的基础上扩展新的功能或者重新写父类的方法。这样的特点可以减少代码冗余,实现代码复用和层级关系。

多态

同一操作作用到不同的对象时,可能产生不同的执行结果。泽阳的使用提高了代码的灵活性和扩展性,符合“开闭原则”(对扩展开放,对修改关闭)

抽象

忽略次要细节,提炼事物的核心特性,形成抽象的“类”或“接口”,这样简化复杂系统,聚焦核心逻辑

面向对象编程的优势

  1. **贴合现实思维:**通过“对象”映射实现事物,代码更易理解维护。
  2. **适合大型项目:**模块化的设计使多人协作更高效,后期的维护扩展也更方便。
  3. **代码复用性高:**通过继承和组合减少代码的重复
  4. **安全性更高:**封装的机制保护内部数据,降低误操作的风险。

C++的面向对象的三大特征都是什么?每种特征的主要作用是什么?

C++面向对象的三大特征:封装、继承、多态。

封装:

将对象的属性和方法捆绑在一个类当中,通过方案控制符(public/private/protected)限制外部对内部数据直接访问,仅暴露不要的接口与外部交互。

主要作用:

  1. 数据保护:通过private隐藏内部的细节,繁殖外部代码随意的修改数据,避免数据被误操作。
  2. 降低耦合:外部只需要通过类的public方法与对象交互无须关心内部逻辑,当类的内部实现修改时,外部代码无须变动。
  3. 模块化:每个类成为一个独立的功能模块化,便于代码的组织和多协作开发。

继承:

允许一个类(子类/派生类)继承另一个类(父类/基类)的属性和方法,子类可以在此基础上增加自己是属性和方法。或者重写父类的方法。

主要作用:

  1. 代码复用:子类无需编写父类已有的功能,直接继承并复用,减少代码的冗余。
  2. 构建层级关系:通过继承的体现现实世界中的关系,使类的设计更符合现实逻辑
  3. 扩展便捷性:在父类基础上扩展新功能不影响父类及其他子类的实现。

多态:

同一操作作用域不同对象,会产生不同的执行结果。C++主要通过虚函数和指针/引用的动态绑定实现。

  1. 接口统一:使用父类指针/引用调用方法时,无需区分具体子类类型,统一接口即可适配不同实现。
  2. 扩展性强:新增子类,无需修改现有的代码,只需要实现喜神的方法,符合开不原则
  3. 灵活性高:运行是根据对象实际类型动态选择的方法,使程序逻辑更灵活
http://www.dtcms.com/a/352854.html

相关文章:

  • 在Windows系统上升级Node.js和npm
  • camel agent
  • 人工智能安全地图:将人工智能漏洞与现实世界的影响联系起来
  • 【设计模式】简单工厂模式
  • 利用MCP实现爬虫智能体,获取数据竟如此简单恐顾
  • 【Python学习笔记】whl包打包
  • 【Redis#7】Redis 数据结构 -- Set 类型
  • AV1到达开始和约束时间
  • 如何避免绕过WAF 直接访问云主机
  • 从 WPF 到 Avalonia 的迁移系列实战篇1:依赖属性的异同点与迁移技巧
  • 学术/报告场景实测:从申请OpenAI API Key获取并实现GPT-5 PDF分析机器人(含源码)
  • 【Linux】从0到1掌握进程控制:终止、等待与替换的核心逻辑
  • 音频中的噪音门
  • 视频加水印_带gif 加动态水印 gif水印 视频浮动水印
  • 2025年03月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 《MongoDB 常用命令详解:从数据库操作到高级查询》
  • mongodb influxdb
  • Vue JS安装部署与使用方法(保姆级教程)
  • Java 实现 MongoDB ObjectId 算法
  • Python常见设计模式3: 行为型模式
  • 数据分析与数据挖掘
  • 【技术教程】如何为ONLYOFFICE协作空间开发文件过滤UI插件
  • string类的学习及模拟
  • vue拖动排序,vue使用 HTML5 的draggable拖放 API实现内容拖并排序,并更新数组数据
  • 【无标题】淘宝直播间详情数据
  • 云原生安全架构设计与零信任实践
  • 三格电子——高频一体式工业级RFID读写器的应用
  • 核心内涵解析:销采一体化 CRM 是什么?
  • 贴片式TE卡 +北京君正+Rk瑞芯微的应用
  • 亚马逊ASIN定投广告的智能化突破:从人工苦力到数据驱动的华丽转身