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

C++面向对象编程:从封装到实战

一、面向过程 VS 面向对象

1. 面向过程(之前全部所学)

核心:步骤化、流程驱动先做什么、再做什么,函数独立零散。适合:简单小程序、逻辑简单场景。

2. 面向对象(C++ 核心)

核心:万物皆对象,封装整体将「数据 + 操作数据的行为」打包成一个整体 ——。三大特性:封装、继承、多态(本篇吃透封装)


二、类与对象 核心概念

  1. 类(class)抽象模板,描述一类事物的共性;包含:成员变量(属性)+ 成员函数(行为)

  2. 对象类的具体实例,通过类创建出来的实体;一个类可以实例化无数个对象。

通俗类比:

  • 类 = 房子图纸
  • 对象 = 实际盖出来的每一套房子

三、类的语法结构

class 类名 { // 访问权限 访问修饰符: // 成员变量 变量定义; // 成员函数 函数声明/定义; };

访问权限(三大权限)

  1. private私有:仅本类内部访问,默认权限
  2. public公有:类内、类外、全局都能访问
  3. protected保护:继承专用,后续讲解

四、最简类定义 + 对象实例化

1. 定义一个 Person 类

#include <iostream> #include <string> using namespace std; // 定义类 class Person { // 公有权限 public: // 成员变量:属性 string name; int age; // 成员函数:行为 void showInfo() { cout << "姓名:" << name << " 年龄:" << age << endl; } };

2. 创建对象 & 调用成员

int main() { // 方式1:栈上实例化对象 Person p1; p1.name = "张三"; p1.age = 18; p1.showInfo(); // 方式2:多个对象互相独立 Person p2; p2.name = "李四"; p2.age = 20; p2.showInfo(); return 0; }

输出:

姓名:张三 年龄:18 姓名:李四 年龄:20

五、封装的核心思想

1. 为什么需要封装?

  • 保护核心数据,防止外部随意篡改
  • 统一接口访问,代码更安全、易维护
  • 隐藏内部实现,只暴露必要功能

2. 标准封装写法

成员变量私有化(private)提供公有 get/set 函数 读写数据

封装标准模板:

class Student { private: // 私有成员:外部无法直接访问 int id; double score; public: // set:设置私有变量 void setId(int _id) { id = _id; } void setScore(double _s) { // 可加数据校验,防止非法值 if(_s >= 0 && _s <= 100) { score = _s; } } // get:读取私有变量 int getId() { return id; } double getScore() { return score; } };

3. 封装调用演示

int main() { Student s; // s.id = 1001; // 报错!私有无法直接访问 s.setId(1001); s.setScore(92.5); cout << "学号:" << s.getId() << endl; cout << "成绩:" << s.getScore() << endl; return 0; }

六、对象的两种创建方式

  1. 栈对象(常用、自动释放)
Person p;
  1. 堆对象 / 动态对象(new 创建,手动释放)
Person* p = new Person; p->name = "王五"; p->showInfo(); // 手动释放 delete p; p = nullptr;

对象指针访问成员使用->,普通对象使用.


七、类内函数 与 类外函数分离写法

大型项目常用:类内声明,类外实现,结构更清晰

class Person { public: string name; int age; void work(); // 类内声明 }; // 类外实现,加 类名:: 作用域 void Person::work() { cout << name << " 正在工作" << endl; }

八、高频易错点

  1. class 默认权限为private,struct 默认public
  2. 私有成员直接在类外访问,编译报错
  3. 对象指针误用.、普通对象误用->
  4. 堆对象忘记 delete,造成内存泄漏
  5. 未封装直接暴露所有成员,不符合工程规范

九、今日核心总结

  1. 类是模板,对象是实例,C++ 面向对象基础
  2. 三大访问权限:public / private / protected
  3. 封装核心:变量私有,函数公有,数据安全可控
  4. 对象访问:普通对象.、对象指针->
  5. 类外实现成员函数必须加类名::作用域限定符
http://www.jsqmd.com/news/696429/

相关文章:

  • 机器学习算法迷你课程:从原理到实战
  • 选择数学高中问题
  • DOC/DOCX转TXT工具:功能详解与使用指南
  • 技术向善中的可持续发展与社会价值
  • 3分钟掌握跨平台资源下载神器:res-downloader完整使用指南
  • 量子霸权验证白皮书:软件测试从业者的专业视角与应对框架
  • Qwen3-4B-Instruct保姆级教程:从服务器初始化到WebUI访问全链路
  • 2026年评价高的系统门窗五金/传动盒门窗五金/执手门窗五金/高端门窗五金生产厂家推荐 - 品牌宣传支持者
  • 出海业务安全架构搭建:跨境云主机合规部署与全域抗攻击策略
  • 理解_lambda_表达式
  • DeepSeek写的小说,prompt 是“写一个搞 大模型AI 的爽文男主小说,写 5 章内容,剧情搞笑好玩”
  • Alibaba DASD-4B Thinking 对话工具实战:网络协议分析与故障模拟脚本生成
  • 2026专业瓷泳系统窗批发厂家TOP5推荐:瓷泳系统窗厂家/瓷泳系统窗厂家/瓷泳系统窗品牌/瓷泳系统窗品牌/瓷泳系统窗哪家好/选择指南 - 优质品牌商家
  • 2026辊筒干燥机权威品牌TOP推荐适配多生产场景:马铃薯雪花全粉设备/麦片辊筒干燥机/滚筒干燥机/米粉辊筒干燥机/选择指南 - 优质品牌商家
  • FLUX.1-Krea-Extracted-LoRA应用案例:独立摄影师AI辅助创意构思工作流
  • 福利|AMD × LMCache:基于 AMD GPU 的 LMCache 推理加速
  • twincat不小心把无线网卡添加到for demo ues only那一栏怎么办
  • 内卷后端开发没用了,大模型岗位薪资直接翻倍
  • 低代码开发平台的核心架构:表单、流程、权限、数据模型如何协同
  • 2026年比较好的广东执手门窗五金/锁盒门窗五金/广东传动盒门窗五金/门窗五金精选厂家推荐 - 行业平台推荐
  • Kotlin的@kotlin.time.ExperimentalTime的使用示例
  • QFT终极指南:如何用Rust构建真正的点对点UDP文件传输工具
  • 华北理工大学特色培养项目解析:钢铁碳中和学院实验班与产教融合
  • LEB100F-0524-SN LEB100FSN COSEL电源全新原装可替代XKTEA 2500
  • LLM Tornado:统一 .NET AI 开发框架,实现多模型智能体编排
  • React 快速入门到精通教程:从零基础到能写项目
  • TouchPad(单例)
  • Nunchaku-flux-1-dev实现内网穿透工具开发:安全通信方案
  • Mac彻底清理指南:Pearcleaner让你的系统重获新生
  • 如何利用人工智能快速将传统起诉状转换成要素式起诉状