c++ Primer学习完后第十五章面向对象程序设计的小结

C++ Primer 第五版 ——《第十五章 》面向对象程序设计 (多态与继承)学习笔记 目录 OPP:概述 定义基类 定义派生类 派生类中的虚函数 、override 关键字(530P) 派生类到基类的类型转换 (530P) 派生类的构造函数 (531P) 在派生类中使用继承其基类的成员 (531P) 继承与静态成员 ( 532P ) 派生类的声明需要注意的地方 (532P) 被用作基类的类需要注意的地方 (533P) 通过 final 来 禁止类被继承 类型... 阅读详情

书上是这么说的:面向对象程序设计的核心思想是数据抽象,继承和动态绑定。
也有人是叫封装继承和多态,也有加一个抽象。其实都是一个意思,差不多。不过我个人感觉最难的是数据抽象。个人在看最后一节,他类的设计这的好。那个时候我就在想,为什么他能这么想。

基类的定义和以前定义的类差不多,不过必须把显式的把析构函数定义出来,而且定义为虚函数,至于为什么书上也是有解释的,不过没认真看,反正要定义就是了。虚函数定义的关键字virtual。

class A 
{
public:
	A(const int& x,const int& y):b(x),i(y){};
	virtual int fun(int xx);
	virtual ~A() = default;
private:
	int b;
protected:
	int i;
};

以上就是一个简单的基类的定义;这个基类是可以创建对象的并调用里面的虚函数。这里多了一个protected访问说明符,在派生类(是继承基类的一个类)里有用,在类外部和private一样,是不可访问的,只能在类内访问。如果类内是virtual int fun(int xx) = 0;则这个是纯虚函数,这个类是抽象基类。只要在虚函数后面写=0,那这个类就是抽象基类,抽象基类是不能直接创建对象的,可以定义成指针。

class a : public A
{
public:
	a(const int& x,const int& y,const int& p,const int& q):A(x,y),c(p),d(q){};
	fun(int xx) override;
	int fun2(){return b;};//错误,无法访问基类的private
	int fun3(){return i;}; //正确,可以访问基类的protected
private:
	int c;
protected:
	int d;
};

以上是一个派生类,其基类是A这个类。a继承了A。所以,a类里面也有b和i这两个变量。只是是隐式的。protected访问说明符,在类外与private一样,无法直接访问。在类内和public一样。但是private无法让其派生类访问,protected可以让其派生类访问。上面多了一个关键字override,这是虚函数的覆盖,也是可以理解成虚函数的重载。然后在函数块内就可以定义符合这个类的方法了。当要覆盖基类里面的虚函数的时候,返回类型和形参列表不能改。派生类的定义,在类后面加上冒号和访问说明符和要继承的类。这里的访问说明符也有三种。public表示基类在派生类里面不变。比如A类里的i是protected的,不变。这样把a当成基类,给别的类继承的时候,可以在类内访问i。但是如果是private,那么i在a里就会变成private,那么这样把a当成基类,给别的类继承的时候,不可以在类内直接访问i。ok,总结一下。public就是什么也不变。private就是把基类里的变成派生类里的private,这样派生类的派生类就无法直接访问。protected同样的道理。

如果把基类定义成指针或者引用,比如定义一个函数:

   int fun4(const A& xxx)
    {
    	return xxx.fun();
    }

这里的fun()是虚函数对吧,如果传入的是A的对象,那么调用的就是A类里面的fun()这个函数,如果传入的是a(是A的派生类对吧),那么调用的就是a类里面的fun()。很神奇对吧。但是只有对有继承体系的类和虚函数这样有用。

以上就是数据抽象,继承和动态绑定。

这里总结了一个大概,还有一些比较简单的没说。比如作用域,很明显基类是不能使用派生类里面的数据对吧。

ok,就这样吧。

C++Primer第五版 习题答案 目录 C++Primer第五版 习题答案 本文当作我学习C++的一个记录,这里的习题答案并不是标准答案,仅仅是我的理解,如有错误,请大家指出,谢谢! 我参考的文章会在文末列出,谢谢大家。 第一章 ... 阅读详情

相关推荐

计算机国际会议中的proceedings、conference、paper、workshop、demo:如何区分与选择?

本文详细解析了计算机国际会议中的核心概念:Conference(会议)是学术交流的主舞台,Paper(论文)是研究成果的书面呈现,被接收后收录于Proceedings(会议论文集)。Workshop(研讨会)聚焦前沿细分领域,Demo(演示)则侧重系统与工具的可交互展示。文章为研究者根据自身阶段与工作类型,如何区分与选择投稿目标提供了实用指南。

weixin_29269441的博客 563

c++ primer plus 第六版第十五章学习笔记

1、不同类间的友元: 1)友元类;A类是B类的友元;A中所以的方法都可以访问B类的私有成员,在B类公有成员中声明添加friend class B;语句即可。 2)特定友元成员函数:A类中的特定成员函数是B类的友元;只有在B类中声明为其友元的A类成员函数才能访问B类的私有成员,在B类公有成员声明中添加:friend 函数返回值 A类名::函数原型;语句即可。此时由于在A类友元声明中用到了B类名...

Schlangemm的博客 871

Claude Code 接入 DeepSeek-V4 教程

本文介绍Claude Code的安装配置流程:1) 安装Node.js 18+和Git(Windows);2) 通过npm全局安装@anthropic-ai/claude-code;3) 配置DeepSeek API环境变量(需替换API Key);4) 启动Claude Code或配置VSCode插件。重点包括Linux/macOS和Windows的环境变量设置方法,以及VSCode插件的settings.json配置项。完成配置后即可在终端或VSCode中使用Claude Code功能。

培根芝士的专栏 2012

《C++ Primer》学习笔记 (第十五章)——面向对象程序设计

面向对象程序设计 (本章的知识点比较多,同时也很重要,但是书上讲解顺序感觉有点乱,所以我自己尽量对本章的内容进行归纳总结,并没有按照书上的顺序进行复习。) 面向对象程序设计的核心思想是:数据抽象、继承、动态绑定,相应的面向程序设计的特征就是:封装、继承、多态。 一、基类 1、首先,基类中有两种不同类型的成员函数,一种是与派生类类型无关的,派生类直接继承不需要改变的成员函数,另一种成员函数基类希望派...

weixin_42702722的博客 422

STC8H DMA 串口1全双工中断方式收发通讯C语言

串口1全双工中断方式收发通讯程序。 通过PC向MCU发送数据, MCU将收到的数据自动存入DMA空间. 当DMA空间存满设置大小的内容后,通过串口1的DMA自动发送功能把存储空间的数据原样返回. 用定时器做波特率发生器,建议使用1T模式(除非低波特率用12T),并选择可被波特率整除的时钟频率,以提高精度。

czhaii的专栏 1467

手把手教你用mitmproxy抓包抖音数据流(附Python脚本模板)

本文详细介绍了如何使用mitmproxy抓包抖音数据流,包括环境搭建、证书安装和Python脚本模板。从mitmproxy配置到抖音API解析,提供完整的移动端数据流分析方案,帮助开发者快速掌握数据抓取技术,适用于应用优化、竞品分析和安全审计等场景。

weixin_33670786的博客 308

C++primer学习笔记及作业答案之第十五章

笔记: 15.1 OOP概述 面向对象程序设计的核心思想:数据抽象、继承、动态绑定。 当我们使用基类的引用或指针调用一个虚函数时将发生动态绑定。(也称运行时绑定) 15.2 定义基类和派生类 基类通常都应该定义一个虚析构函数,即使该函数不执行任何实际操作也是如此。 派生类必须将其继承而来的成员函数中需要覆盖的那些重新声明。 派生类的声明包含类名但是不包含它的派生列表。 当使用基类的...

blue_coffeei的博客 626

干货满满!AI应用架构师分享AI驱动虚拟展示干货

虚拟展示(Virtual Presentation):用数字技术将物理对象/场景转化为可交互的虚拟内容(比如3D文物、虚拟试衣间);AI驱动(AI-Powered):通过AI技术实现实时交互、智能决策、个性化生成,让虚拟内容“活”起来;AI驱动虚拟展示:以用户体验为核心,将“3D渲染+AI理解+实时数据”融合,形成“感知-决策-反馈”的闭环系统。前端交互层是用户直接体验到的部分,再厉害的AI和渲染,只要前端交互烂,用户都会跑。我见过很多团队为了“炫技”做了复杂的AI功能,结果用户不会用。

AI大模型应用之禅 537

C++Primer Plus(第六版)第十五章学习笔记:

本章内容: 友元类 友元类方法 嵌套类 引发异常 异常类 运行阶段类型识别 dynamic_cast和typeid static_cast、const_cast和reiterpret_cast 15.1 友元 15.1.1 友元类

baidu_29452653的博客 650

【部署】Kimi 接入OpenClaw完整步骤及关键注意事项

本文详细介绍了如何将Kimi AI接入OpenClaw系统的完整步骤。首先需确保环境满足OpenClaw版本要求和系统支持,然后通过配置向导完成本地网关设置和Kimi模型接入,包括API密钥配置。文章提供了详细的命令操作和界面截图指导,并重点说明了安全警告处理、服务状态检查、API密钥有效性验证等关键注意事项。最后还展示了Kimi流量消耗明细和问题排查方法,帮助用户顺利完成接入并解决常见问题。整个流程清晰明了,涵盖了从环境准备到最终验证的全部环节。

海兰 7193

(五)C++自制植物大战僵尸游戏LoadingScene的实现讲解

游戏启动后就会立即切换到游戏加载场景中。只有游戏资源文件加载完成后,才能进入游戏。Loadingscene类继承Cocos2d-x中的Scene父类,表明Loadingscene是一个场景类。切换到LoadingScene场景中,首先会创建该场景,会调用函数,在该函数中调用自己定义的方法实现指定功能。代码文件的位置如下图所示。

尔灵尔亿的博客 2006

《C++ Primer》学习笔记/习题答案 总目录

文章目录前言专栏C++学习笔记目录第一章 - 快速入门第二章 - 变量和基本类型第三章 - 标准库类型第四章 - 数组和指针第五章 - 表达式第六章 - 语句第七章 - 函数第八章 - 标准 IO 库第九章 - 顺序容器第十章 - 关联容器第十一章 - 泛型算法第十二章 - 类第十三章 - 复制控制第十四章 - 重载操作符与转换第十五章 - 面向对象编程第十六章 - 模板和泛型编程第十七章 - 用...

种树最好的时间是10年前,其次是现在!!! 4万+

【机器学习-09】特征工程

特征工程是机器学习模型构建的初步工作,但它的重要性却贯穿整个模型生命周期。在进行特征工程时,我们需要充分利用数据科学的知识和技巧,结合具体的应用场景和业务需求,来制定出最合适的特征提取和转换策略。只有这样,我们才能为机器学习模型提供最有价值的输入,从而使其发挥出最大的潜力。总之,特征工程是机器学习中的一项关键任务,它需要我们用心去探索、去实践、去创新。只有不断地优化和完善特征工程的过程,我们才能构建出更加准确、更加可靠的机器学习模型,为实际应用带来更大的价值。

qq_38614074的博客 2万+

面向对象程序设计(C++语言描述)与C++ Primer:内容定位与学习路径的差异化解析

在深入学习C++编程语言的过程中,选择合适的教材至关重要。它可能更专注于抽象、封装、继承、多态等面向对象的核心概念,以及如何利用类、对象、接口、模板、命名空间等C++语言特性来构建具有良好可维护性、扩展性和复用性的软件系统。《C++ Primer》则是一部全面介绍C++语言的综合性教程,其内容涵盖了C++语言的各个方面,包括基本语法、数据类型、控制结构、函数、类与对象、模板、标准库(如STL)、异常处理、文件与流操作、现代C++特性(如右值引用、智能指针、lambda表达式等)等。

2401_83239642的博客 871

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C++Primer第五版 习题答案 第十五章 面向对象程序设计(Object-Oriented Programming)

练习15.1 什么是虚成员? 虚函数是基类希望其派生类进行覆盖的函数。 练习15.2 protected 访问说明符与 private 有何区别? 派生类的成员函数可以访问protected访问运算符的成员,而不能访问private的。 练习15.3 定义你自己的 Quote 类和 print_total 函数。 Quote_ex03.h #ifndef QUOTE_H_ #defin...

shamozhizhoutx的博客 4178

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

从《C++ Primer 第四版》入手学习 C++

《C++ Primer 第4版 评注版》即将出版,这是序言。PDF 版见:https://github.com/downloads/chenshuo/documents/LearnCpp.pdf从《C++ Primer 第四版》入手学习 C++为什么要学习C++?2009 年本书作者 Stan Lippman 先生来华参加上海祝成科技举办的C++技术大会,他表示人们现在还用C++的惟一理由是其性能

陈硕的Blog 8万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

如何正确通过 C++ Primer 学习 C++?

链接:https://www.zhihu.com/question/32087709编辑:深度学习与计算机视觉声明:仅做学术分享,侵删即将读研,虽然考的是本专业(GIS),但是研究生读的...

深度学习与计算机视觉 7771

Node-RED 数据处理实战手册:JSON、XML、CSV 的互转与排错

Node-RED 的数据处理,主要靠核心解析器里的一组节点完成:JSON、XML、CSV(还有 HTML、YAML),它们能把 msg 里的字符串、对象和表格数据互相转换。这篇文章不按"技巧清单"罗列,而是跟着一条数据在流程里走完全程:怎么从字符串变成对象,怎么在 XML 和 CSV 之间互转,字段对不上或坏消息出现时怎么办,最后再看怎么提速。 ## 数据入口:三步把 JSON 字符串解析成对象

gitblog_00964的博客 1058

TeamAI 自动同步揭秘:AI 会话如何静默获取团队最新资源的完整指南

TeamAI 是一款开源的 AI 团队资源管理 CLI 工具(teamai-cli),它的自动同步机制可以让 Claude Code、Codex、Cursor 等 AI 助手在**每次会话启动时静默拉取团队最新的技能、规则与知识**,全程无需人工干预。本文带你彻底搞懂这套机制背后的原理。✨ ## 什么是 TeamAI 自动同步? 想象这样一个场景:管理员更新了团队的编码规则,昨天还有效的技能今

gitblog_01132的博客 993

C++Primer Plus学习笔记

此博文是通过翻阅C++ Primer Plus中文第6版(2020),逐章学习记录笔记由此学习C++的基础特性和语法知识,有别于其它视频教学+代码+笔记的学习途径,更趋向传统的书籍+代码+笔记学习,Cpp第6版以C++11标准为主,学习C++基础编程绰绰有余.

weixin_45068267的博客 3198

GetQzonehistory:把十年QQ空间历史说说完整导出,Excel和网页一次拿全

GetQzonehistory 是一个本地运行的 Python 小工具,用来把你 QQ 空间发过的历史说说完整抓取下来,导出成 Excel 表格和一个还原空间样式的网页文件,长期存在自己的硬盘里。适合说说发得多、想把这些旧记录完整存档的人。 ## 先说结果:跑完之后你会得到什么 程序跑完后会自动打开 `resource/result/你的QQ号/` 这个文件夹,里面是一套完整的东西: | 产

gitblog_00301的博客 631

快速上手Cpp-Primer-5th-Exercises:新手必备的C++练习指南 [特殊字符]

想要系统学习C++编程语言,但面对《C++ Primer》这本经典教材的练习题感到无从下手?别担心!Cpp-Primer-5th-Exercises项目为你提供了完整的练习解答,帮助你快速掌握C++编程的核心概念和技巧。这份终极指南将带你深入了解这个宝贵的C++学习资源,让你在编程学习道路上事半功倍! ## 📚 项目简介:你的C++学习好帮手 Cpp-Primer-5th-Exercises

gitblog_01075的博客 1074

《C++Primer》第十五章 面向对象程序设计

第十五章 面向对象程序设计 概述 面向对象程序设计object-oriented programming的核心思想是数据抽象、继承和动态绑定: 使用数据抽象,我们可以将类的接口与实现分离 使用继承可以定义相似的类型并对其相似关系建模 使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象 1. 继承 在层次关系根据的类被称为基类bsae class,其他类则直接或间接地...

TOMACAT的博客 1011

C++程序设计教材目录思维导图(增C++Primer)

  正在做C++思维导图,大工程,比较艰苦。   先做了三个C++教材目录的思维导图。C++教材不等于C++,这个容易些。看思维导图,整理所学知识,这个可以会。   给出三张图,对应三种教材: 谭浩强. C++程序设计.清华大学出版社 C++ PRIMER 第四版 特别版 C++ PRIMER(低版本)   制作工具:XMind   制作方法:下载教材目录,copy到wps...

迂者-贺利坚的专栏 3万+

如何快速预览 3D 模型:轻量级 3D 工具 F3D 三维查看器完整指南

F3D三维查看器是一款免费、开源的轻量级 3D 工具,支持 Windows、macOS 和 Linux 三个平台,只做一件事:把 3D 模型文件快速打开并实时预览。如果你经常需要查看 GLTF、STL 等模型文件,或者想在一分钟内确认模型的形状、材质和动画状态,它就是适合做 3D 模型预览的工具。设计师、开发者和内容创作者都适用,安装即用,不需要复杂配置。 ## 三步打开你的第一个 3D 模型

gitblog_00927的博客 1026

Cpp-Primer-5th-Exercises项目揭秘:从基础语法到高级特性的完整路径

你是否正在学习C++编程语言,却被《C++ Primer》第五版中的复杂习题困扰?😅 别担心,Cpp-Primer-5th-Exercises项目为你提供了完整的习题解答指南!这个开源项目包含了《C++ Primer》第五版所有章节的习题解答,从基础语法到高级特性,为你搭建了一条清晰的学习路径。无论你是C++初学者还是希望巩固知识的开发者,这个项目都是你学习路上的得力助手。 ## 📚 项目概

gitblog_00578的博客 846
上一篇: c++ Primer学习完后第十三章拷贝控制的小结
下一篇: 在Ubuntu下下载了Python3之后安装jupyter遇到的问题
黯黑丶丨枭雄
博客等级 码龄8年 2粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值