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

C++ 面向对象四大特性:面试深度解析

前言

面向对象编程(Object-Oriented Programming, OOP)是 C++ 的核心。在技术面试中,对 OOP 四大基本特性——封装 (Encapsulation)继承 (Inheritance)多态 (Polymorphism)抽象 (Abstraction) 的理解和运用是必考点。本篇文档旨在帮助你系统、清晰地掌握这些概念,并能用代码自如地向面试官展示你的理解。

1. 封装 (Encapsulation)

核心定义

封装是将数据(属性)和操作这些数据的方法(函数)捆绑到一个独立的单元(即 类 (Class))中。同时,它通过控制访问权限(public, private, protected)来隐藏对象的内部实现细节,只对外暴露必要的接口。

面试官想听到什么: 封装的核心是“捆绑”和“隐藏”。它不仅是把数据和方法放在一起,更重要的是保护数据,防止外部代码随意篡改,保证了数据的安全性和完整性。

为什么需要封装?

  • 安全性 (Security): 隐藏内部数据,防止非法访问和修改。

  • 模块化 (Modularity): 将复杂的系统分解为一个个独立的、可管理的类,降低了系统的复杂度。

  • 灵活性 (Flexibility): 类的内部实现可以随时修改,只要对外暴露的公共接口不变,就不会影响到其他使用该类的代码。

代码示例

在这个例子中,BankAccount 类封装了 accountNumberbalance。外部代码无法直接访问 balance,只能通过 depositwithdraw 这两个公共接口来安全地操作余额。

#include <iostream>
#include <string>// BankAccount 类将账户数据和操作封装在一起
class BankAccount {
private:// 数据成员被设为私有,外部无法直接访问std::string accountNumber;double balance;public:// 构造函数,用于初始化对象BankAccount(std::string num, double initialBalance) {accountNumber = num;// 保证初始余额是有效的if (initialBalance >= 0) {balance = initialBalance;} else {balance = 0.0;}}// 公共成员函数(接口),用于与外部交互void deposit(double amount) {if (amount > 0) {balance += amount;std::cout << "存款成功. 当前余额: " << balance << std::endl;
http://www.xdnf.cn/news/1291285.html

相关文章:

  • 河南萌新联赛2025第五场 - 信息工程大学
  • IDEA创建一个VUE项目
  • C# 微软依赖注入 (Microsoft.Extensions.DependencyInjection) 详解
  • 数据分析项目----幸福感挖掘和预测
  • Python实战教程:PDF文档自动化编辑与图表绘制全攻略
  • PyTorch生成式人工智能——基于Transformer实现文本转语音
  • SeaTunnel MCP Server 入选《中国信通院开源商业产品及企业典型案例集(2025)》
  • 袖珍手持气象仪的用途
  • linux_网络层-ip协议
  • 开源日志log4cplus—调用MultiByteToWideChar提示未定义,CP_UTF8未定义定原因有哪些,如何改进?
  • 【安卓,问题记录】ImageView 在布局顺序上位于 Button 上方,却出现图像内容被 Button 遮挡
  • 北京JAVA基础面试30天打卡09
  • ELK开启安全策略
  • 【递归、搜索与回溯算法】穷举、暴搜、深搜、回溯、剪枝
  • String里常用的方法
  • w481社区老人健康信息管理系统的设计与实现
  • 5.语句几个分类
  • BGE:智源研究院的通用嵌入模型家族——从文本到多模态的语义检索革命
  • 开源WAF新标杆:雷池SafeLine用语义分析重构网站安全边界
  • 【C#】利用数组实现大数数据结构
  • 银发经济时代:科技赋能养老,温情守护晚年,让老人不再孤独无助
  • LeetCode 面试经典 150_数组/字符串_整数转罗马数字(18_12_C++_中等)(模拟)(对各位进行拆解)
  • STM32HAL 快速入门(六):GPIO 输入之按键控制 LED
  • JMeter 测试 WebSocket 接口的详细教程
  • HarmonyOS NDK的JavaScript/TypeScript与C++交互机制
  • 实战多屏Wallpaper壁纸显示及出现黑屏问题bug分析-学员作业
  • 从0开始配置conda环境并在PyCharm中使用
  • 基于Apache Flink的实时数据处理架构设计与高可用性实战经验分享
  • Flink中的窗口
  • 解决程序连不上RabbitMQ:Attempting to connect to/access to vhost虚拟主机挂了的排错与恢复