《面向对象编程》--c++ primer 第15章

c++面向对象编程的一个例子(书店) 本例子是c++ primer书中第15章面向对象编程的一个贯穿全章的例子: #include #include #include using namespace std; /* Item_base类定义了book和net_price函数并且需要存储每本书的ISBN和标准价格 */ class Item_base { public: Item_base(const 阅读详情

一(数据抽象)继承和动态绑定是面向对象编程最重要的两个行为。

只有public和protected成员才能被继承。

(1)protected成员使用规则

1 像proivate成员一样,protected成员不能被类的用户访问(基类可以访问,基类对象不能访问protected成员)。

2 像public成员一样,protected成员可以被类的派生类访问(派生类可以访问protected成员,派生类对象不行)。

3 只有在派生类中才可以通过派生类对象访问基类的protected成员。

以下程序有错误?错在第3条。

#include <iostream>
using namespace std;
class base
{
      protected:
                int m;}               
class top:public base{
      public:
             int mem(base &a,top &z)
             {//cout<<a.m<<endl;//error
             cout<<z.m<<endl;
             return 0;}
      
      };

(2)动态绑定:条件1:含有虚函数。条件2:通过基类类型的的指针或者引用。

(3)使用与操作符覆盖虚函数。例如,base *p=&derived;double d=p->base::price(24);

(4)名字冲突:与基类成员同名的派生类成员将屏蔽对基类成员的直接访问。

(5)纯虚函数:

1 意义: 在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

2 定义:virtual <类型><函数名>(<参数表>)=0;

3 使用:凡是含有纯虚函数的类叫做抽象类。这种类不能声明对象,只是作为基类为派生类服务。除非在派生类中完全实现基类中所有的的纯虚函数,否则,派生类也变成了抽象类,不能实例化对象。


二  友元关系(类或者函数)

友元可以访问类的private和protected数据。

友元关系不能继承。


三 句柄类

意义:为了实现多态而不必担心指针的控制。

定义:1包含对象的指针。2包含计数器(防止多个指针指向同一对象时,对象被删从而引起错误)。


C++ Primer Plus 第15章编程实践与源码解析 本文还有配套的精品资源,点击获取 简介:《C++ Primer Plus 第15章编程实践与源码解析》为C++初学者提供了深入学习该语言的机会。本章主要涵盖了C++的高级特性和面向对象编程的核心概念,包括类与对象的定义、构造函数与析构函数的应用、运算符重载、动态内存管理、访问控制、友元的使用、继承与多态的概念以及模板编程和异常处理。通过编程练习和源码的展示,学习者能够更好地... 阅读详情

相关推荐

从零搭建自动驾驶仿真环境:我的Nuplan-devkit实战笔记(含PyCharm配置技巧)

本文详细记录了从零搭建Nuplan-devkit自动驾驶仿真环境的完整流程,包括conda环境配置、pip版本控制、PyCharm专业版集成等关键步骤。特别针对Ubuntu系统下的依赖管理、数据目录优化和性能调优提供了实用技巧,帮助开发者高效构建稳定的自动驾驶仿真开发环境。

weixin_30505225的博客 479

C++primer(第五版)第十五章(面向对象程序设计)

面向对象程序设计(object-oriented programming)的核心思想是数据抽象,继承和动态绑定(个人认为应该是多态,但是书里原话是动态绑定,因此不太确定).一开始,C++只是C加上一些面向对象特性.C++最初的名称C with Classes 也反映了这个血缘关系 ——《Effective C++(第三版)》

m0_63235356的博客 394

深入剖析一个卷积块(ConvBlock)

深入剖析一个卷积块(ConvBlock)

qq_45670407的博客 1920

C++ primer(第五版)第15章习题答案

第十五章 面向对象程序设计 15.1 基类希望其派生类进行覆盖的函数,通过在其成员函数的声明语句之前加上关键字virtual使得该函数执行动态绑定。 基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明成虚函数。通常都应该定义一个虚析构函数,即使该函数不执行任何实际操作也是如此。 15.2 private:基类自身和友元可以访问。 protect:基类自身,友元,派...

INFINITE POSSIBILITIES 905

在摩尔线程 MTT S80 上使用 Ollama 进行 DeepSeek R1 蒸馏版模型推理

本文主要介绍了如何在摩尔线程 MTT S80 上通过 Ollama 快速完成DeepSeek R1 蒸馏系列模型的推理。

摩尔线程blog中心 3595

西安电子科技大学841学长经验分享(总成绩第三名)

西安电子科技大学841学长经验分享(总成绩第三名)

qq_30953547的博客 1082

C++ primer 第五版 第十五章练习答案

第15章 面向对象程序设计 15.3 #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class Quote { public: Quote() = default; Quote(const string &amp;book,double sales_price):bookNo...

Leslie5205912的博客 740

STM32单片机入门学习(六)-光敏传感器控制LED

光敏传感模块一DO端接B13,GND接GND,VCC接VCC,AO不接。LED负极接B12,正极接VCC。

指尖魔法师 4368

C++ primer 第十五章 面向对象程序设计

目录15.1 定义基类和派生类 15.1.1 定义基类15.1.2 定义派生类15.1.3 类型转换与继承 15.2 虚函数 15.3 抽象基类15.4 访问控制与继承 15.5 继承中的类作用域15.6 构造函数与拷贝控制15.6.1 虚析构函数 15.6.2 合成拷贝控制与继承15.7 容器与继承 (1)成员函数与继承 在c++语言中,基类必须将他的两种函数区分开来:一种是基类希望其派生类进行覆盖的函数,另一种是基类希望派生类直接继承而不要改变的函数。对于前者,

weixin_42375706的博客 674

【20】方案管理器

方案管理器是Excel中一个非常强大且灵活的工具,适合用于多情景分析和比较。在复杂的决策过程中,它可以帮助用户快速管理和评估不同变量组合下的结果,从而优化决策过程。

学习,输出==》再学习再输出 1585

【Bluedroid】BLE连接过程详解

Bluedroid BLE的链接过程包括扫描、连接和通信三个基本步骤。通过这些步骤,中央设备和外围设备之间可以建立起稳定、高效的通信链路,实现数据传输和控制操作。

byte轻骑兵的技术小窝 1875

玩转 Mush8 的 Mods:如何替换角色、道具与文本(romfs / exefs 结构详解)

Mush8 是一个将《马力欧赛车 8 豪华版》原生移植到 Apple Silicon 的开源项目,而它的 **Mods 系统**让你无需重打包游戏,就能直接替换角色形象、道具逻辑和界面文本。本文带你快速理解 `mods` 文件夹、`romfs` 与 `exefs` 两种 mod 结构的区别,手把手教你完成第一个自定义修改 ⚙️ ## 一、Mush8 的 Mods 是什么? 在 Nintendo

gitblog_00305的博客 652

24. SAP UI5 应用如何使用 OData 数据模型

本教程之前的二十三个步骤,使用的数据模型都是 JSON 模型。从本步骤开始,我们要学习另一种非常重要的数据模型:OData 数据模型。 OData 数据模型也是 SAP 产品里广泛使用的数据模型,比如 SAP S/4HANA,SAP CRM Fiori 应用等等,都使用的是 OData 数据模型而不是 JSON 数据模型。 使用 OData 数据模型的典型场景就是,通过 OData 模型提供的 Read API,将远端服务器上存储的数据通过 OData 协议读取到客户端,并显示在 SAP UI5 应用里。.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5794

《C++ Primer》 第四版 第15章 面向对象编程

《C++ Primer》 第四版 第15章 面向对象编程 思维导图笔记 超级详细,非常详细,图片版,有利于复习查看

onlyshi的专栏 915

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

《C++ Primer》第 15 章 面向对象编程

概述 面向对象编程基于三个基本的概念:数据抽象、继承、动态绑定。在C++中,用类进行数据抽象,用类派生从一个类继承另一个类:派生类继承基类成员。动态绑定使编译器能够在运行时决定使用基类中定义的函数韩式派生类定义的函数。 面向对象编程概述 多态性。在C++中,多态性仅用于通过继承而相关联的类型或是指针。定义virtual的函数是基类期待派生类期待派生类重新定义的,基类希望派生类定义

skyFuhrer的专栏 1302

WINCC7.3破解文件

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

C++ Primer笔记之----第15章面向对象编程

15.1、面向对象编程:概述 1、继承特点: 派生类具有原来的基本特性 具有自己的特性 具有自己的成员 注意:基类要想使派生类重新定义,那么必须声明为虚函数 virtual 问题:那么不声明可否?测试下 #include "stdafx.h" #include using namespace std; class Food { public: void Des(){cout<

hang on it more longer 243

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C++ Primer学习-第15章 面向对象编程

15.1 面向对象编程:概述 在C++中,基类必须指出希望派生类重新定义那些函数,定义为virtual的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为学虚函数。 15.2 定义基类和派生类 在C++中,通过基类的引用(或指针)调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象,这一事实是动态绑定的关键。用引用(或指针)调用

Blunt的专栏 917

[C/C++] 第15章:面向对象编程 《 C++ Primer 》

第15章:面向对象编程 ——面向对象编程基于三个基本概念:数据抽象,继承,动态绑定。 ——用类进行数据抽象 ——用类派生从一个类继承另一个类:派生类继承基类成员; ——动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。 @学习摘录162:继承与动态绑定的作用: ——能够容易地定义与其他类相似但又不相同的新类,能够更容易地编写忽略这些相似类型...

anchang7456的博客 102

《C++ Primer》 第15章:面向对象编程

第15章:面向对象编程 ——面向对象编程基于三个基本概念:数据抽象,继承,动态绑定。 ——用类进行数据抽象 ——用类派生从一个类继承另一个类:派生类继承基类成员; ——动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。 @学习摘录162:继承与动态绑定的作用: ——能够容易地定义与其他类相似但又不相同的新类,能够更容易地编写忽略这些相似类型之间区别的程序。

so true_interview / 491

《C++ Primer》读书笔记之第15章:面向对象编程

一、面向对象概述 1. 面向对象的三个基本特性   封装、继承和多态。 2. 封装   指把隐藏对象的实现细节,仅对外提供接口,从而达到接口与实现分离的效果。封装的好处:一是提高数据的安全性,用户只能使用对象提供的接口,而不能随意修改对象的数据。试想如果用户能够获取权限访问对象的所有实现细节并进行修改,那对象的安全性将无法保证。这和用外壳把电路板封装起来,以免用户随便拆卸电子器件...

317

《C++ Primer 4 Answer Book》 整理[14]——第15章 面向对象编程

<!-- @font-face {font-family:SimSun} @font-face {font-family:SimSun} p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-

我的读书笔记(2011-2013) 522

C++ primer学习心得——第15章-面向对象编程

面向对象编程基于三个基本的概念:数据抽象、继承和动态绑定。在c++中,用类进行数据抽象,用类派生从一个类继承另一个:派生类继承基类的成员。动态绑定是编译器能够在运行时决定是使用基类中定义的函数还是派生类定义的函数。   继承--通过其能够定义这样的类:共享公共的东西,仅仅特化本质上的不同的东西。派生类可以无须改变而使用那些与派生类具有特性不想关的操作,派生类可以重定义那些与派生类类型相关的成员函数

FOREVER_MOUSE_123的专栏 735

C++ primer第二次阅读学习笔记(第15章:面向对象编程)

第十五章:面向对象编程 继承和动态绑定与抽象一起成为面向对象编程的基础。 C++中用类进行数据抽象,用派生从一个类继承另一个类,动态绑定是编译器能够在运行时决定,是使用基类中定义的函数还是派生类中定义的函数。 面向对象编程的关键思想是多态性。 除构造函数以外,任意非static成员函数都可以是virtual函数。继承层次的基类一般都要定义virtual的析构函数。virtual 只能在类内

ithzhang 2475
上一篇: C程序内存区域分配(5个段作用)
下一篇: 数据库: 左连接/右连接/全连接(详细) --复习一下
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值