- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
2025年C++面向对象编程实例解析
面向对象编程(OOP)是C++的核心特性,2025年的C++开发中,OOP思想依然贯穿于各类软件设计(如游戏开发、金融系统、嵌入式应用等)。以下通过经典实例+2025年技术延伸,解析封装、继承、多态三大特性及现代C++(C++17/20/23)的优化实践,帮助开发者掌握OOP的实战应用。
一、核心概念回顾(2025年重点强调)
1.封装(Encapsulation)
本质:将数据(成员变量)和操作数据的方法(成员函数)捆绑在一起,通过访问控制(public/protected/private)隐藏内部实现细节,仅暴露必要接口。
2025年延伸:结合constexpr(编译期常量)和[[nodiscard]](强制检查返回值)提升封装安全性。
2.继承(Inheritance)
本质:子类(派生类)继承父类(基类)的属性和方法,实现代码复用和层次化设计。
2025年延伸:支持final关键字禁止进一步继承,以及override显式标记重写虚函数(避免误写)。
3.多态(Polymorphism)
本质:同一操作作用于不同对象时产生不同行为,分为编译时多态(静态绑定,如函数重载、运算符重载)和运行时多态(动态绑定,通过虚函数实现)。
2025年延伸:结合concepts(概念约束)和模板元编程优化多态性能。
二、经典实例解析(附2025年代码示例)
实例1:封装——银行账户管理(安全与接口设计)
需求
设计一个银行账户类,封装账户余额(私有成员),提供存款、取款和查询余额的公共接口,并确保取款金额不超过余额。
2025年代码实现
#includeiostream
#includestdexcept
#includestring
classBankAccount{
private:
std::stringowner_;//账户所有者(封装数据)
doublebalance_;//余额(私有成员,外部不可直接访问)
public:
//构造函数(初始化列表)
BankAccount(conststd::stringowner,doubleinitialBalance)
:owner_(owner),balance_(initialBalance){
if(initialBalance0){
throwstd::invalid_argument(初始余额不能为负!);
}
}
//存款(公共接口)
voiddeposit(doubleamount){
if(amount=0)[[unlikely]]{//C++20likely/unlikely优化分支预测
throwstd::invalid_argument(存款金额必须为正!);
}
balance_+=amount;
}
//取款(封装逻辑校验)
voidwithdraw(doubleamount){
if(amount=0)[[unlikely]]{
throwstd::invalid_argument(取款金额必须为正!);
}
if(amountbalance_){
throwstd::runtime_error(余额不足!);
}
balance_-=amount;
}
//查询余额(只读接口)
[[nodiscard]]doublegetBalance()constnoexcept{//C++17noexcept表示不抛异常
returnbalance_;
}
//获取账户所有者(只读接口)
[[nodiscard]]conststd::stringgetOwner()constnoexcept{
returnowner_;
}
};
intmain(){
try{
BankAccountacc(Alice,1000.0);
acc.deposit(500.0);
acc.withdraw(200.0);
std::cout账户acc.getOwner()的余额:acc.getBalance()std::endl;
}catch(conststd::exceptione){
std::cerr错误:e.what()std::endl;
}
return0;
}
关键点解析
封装:balance_和owner_为私有成员,外部只能通过deposit()、withdraw()和getBalance()等公共方法操作数据。
安全性:使用异常(std::invalid_argument/std::r
您可能关注的文档
最近下载
- 妊娠期高血糖管理.pptx VIP
- 2025年excel上机考试题及答案国开.doc VIP
- 2025年黑龙江省普通高中学业水平合格性考试英语试题(含答案).docx VIP
- excel上机考试题及答案国开.doc VIP
- 一年级绘本阅读第5课野兽国-课件PPT (1).pptx VIP
- LY_T 1719-2017林业机械 便携式风水两用灭火机.pdf
- 罗氏 超敏肌钙蛋白 T(cTnT)检测试剂盒说明书.pdf VIP
- 高考英语3500个核心考纲词汇自测(全集汇总).docx VIP
- 妊娠期高血糖诊治指南(2024).pptx VIP
- 15ZD01 民用建筑防雷与接地装置(完整).pdf VIP
原创力文档


文档评论(0)