C++ Primer Plus第五版+习题重点笔记(p250-300)

第七章 类(下)

  1. clear需要访问Screen的私有成员;而要想令这种访问合法,Screen需要把 window mgr 指定成它的友元

  2. 如果一个类指定了友元类,则友元类的成员函数可以访问此类包括非公有成员在内的所有成员

  3. 每个类负责控制自己的友元类或友元函数。

  4. 除了令整个 window mgr作为友元之外,Screen还可以只为clear 提供访问权限当把一个成员函数声明成友元时,我们必须明确指出该成员函数属于哪个类

  5. Extern 用法

在这里插入图片描述在这里插入图片描述

  1. 类就是一个作用域的事实能够很好地解释为什么当我们在类的外部定义成员函数时必须同时提供类名和函数名(参见7.1.2节,第230页)。在类的外部,成员的名字被隐藏起来了。

在这里插入图片描述

  1. 另一方面,函数的返回类型通常出现在函数名之前。因此当成员函数定义在类的外部时,返回类型中使用的名字都位于类的作用域之外。

  2. 编译器处理完类中的全部声明后才会处理成员函数的定义

  3. 一般来说,内层作用域可以重新定义外层作用域中的名字,即使该名字已s经在内层作用域中使用过。然而在类中,如果成员使用了外层作用域中的某个名字,而该名字代表种类型,则类不能在之后重新定义该名字

  4. 尽管类的成员被隐藏了,但我们仍然可以通过加上类的名字或显式地使用this指针来强制访问成员

  5. 不要把成员名字作为参数或其他局部变量使用

  6. 如果成员是const、引用,或者属于某种未提供默认构造函数的类类型,我们必须通过构造函数初始值列表为这些成员提供初值。

  7. 构造函数初始值列表中初始值的前后位置关系不会影响实际的初始化顺序。

  8. 最好令构造函数初始值的顺序与成员声明的顺序保持一致。而且如果可能的话,尽量避免使用某些成员初始化其他成员。

  9. 我们不提供实参也能调用上述的构造函数,所以该构造函数实际上为我们的类提供了默认构造函数。

  10. 和其他构造函数一样,一个委托构造函数也有一个成员初始值的列表和一个函数体。在委托构造函数内,成员初始值列表只有一个唯一的入口,就是类名本身。和其他成员初始值一样,类名后面紧跟圆括号括起来的参数列表,参数列表必须与类中另外一个构造函数匹配。

  11. 当一个构造函数委托给另一个构造函数时,受委托的构造函数的初始值列表和函数体被依次执行。

在这里插入图片描述在这里插入图片描述

  1. 关键字 explicit 只对一个实参的构造函数有效。需要多个实参的构造函数不能用于执行隐式转换,所以无须将这些构造函数指定为explicit的。只能在类内声明构造函数时使用explicit 关键字,在类外部定义时不应重复

  2. 当我们用 explicit 关键字声明构造函数时,它将只能以直接初始化的形式使用

  3. static cast可以使用explicit 的构造函数

  4. 接受一个单参数的 const char*的string构造函数(参见3.2.1节,第76页)不是explicit 的。
    接受一个容量参数的vector构造函数(参见3.3.1节,第87页)是explicit的

  5. 聚合类初始值的顺序必须与声明的顺序一致

  6. 与初始化数组元素的规则(参见3.5.1节,第101页)一样,如果初始值列表中的元素个数少于类的成员数量,则靠后的成员被值初始化(参见3.5.1节,第101页)。

  7. 在6.5.2节(第214页)中我们提到过 constexpr 函数的参数和返回值必须是字面值类型。除了算术类型、引用和指针外,某些类也是字面值类型。和其他类不同,字面值类型的类可能含有constexpr函数成员。这样的成员必须符合constexpr函数的所有要求,它们是隐式const的(参见7.1.2节,第231页)。
    在这里插入图片描述

  8. constexpr构造函数必须初始化所有数据成员,初始值或者使用constexpr构造函数或者是一条常量表达式。

  9. 静态成员函数由于不与具体对象关联,没有 this 指针,因此有一些使用上的限制:不能声明为 const,也不能访问或调用非静态成员
    在这里插入图片描述

  10. 和其他的成员函数一样,我们既可以在类的内部也可以在类的外部定义静态成员函数。当在类的外部定义静态成员时,不能重复static关键字,该关键字只出现在类内部的声明语句

  11. 必须在类的外部定义和初始化每个静态成员。和其他对象一样,一个静态数据成员只能定义一次。

  12. 类似于全局变量(参见6.11节,第184页),静态数据成员定义在任何函数之外。因此一旦它被定义,就将一直存在于程序的整个生命周期中。

  13. 即使一个常量静态数据成员在类内部被初始化了,通常情况下也应该在类的外部定义一下该成员。

在这里插入图片描述

第七章习题

在这里插入图片描述

  1. 显示内联和隐式内联
    在这里插入图片描述

  2. 一个不完全类型。我们可以定义指向不完全类型的指针,但是无法创建不完全类型的对象

  3. 在这里插入图片描述

  4. 在这里插入图片描述

  5. 在这里插入图片描述

  6. 聚合类必须满足一些非常苛刻的条件,其中一项就是没有类内初始值

  7. 除了静态常量成员之外,其他静态成员不能在类的内部初始化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子书(chm)-加载JS--CS上线

免责声明: 本文仅做技术交流与学习... 目录 cs--web投递 html(js)代码 html生成chm工具--EasyCHM 1-选择powershell 模式 生成 2-选择bitsadmin模式生成 chm反编译成html cs--web投递 cs配置监听器--->攻击---->web投递---> 端口选择没占用的, URL路径到时候会在…

《昇思25天学习打卡营第1天 | 认识MindScope AI框架和昇思大模型平台》

活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 昇思MindSpore学习笔记:探索AI的无限可能 嗨,AI爱好者们!今天,我要带你们深入了解一个强大的全场景深度学习框架——昇思MindSpore。 准备好了吗…

AWR1843BOOST上的TM4C1294NCPDT是干啥用的?

摘要:AWR1843BOOST上面有2个体积较大的芯片,一片是雷达,另一片是什么呢? 答案:它就是XDS110仿真器。 有了它,就不用再买一个仿真器了。 从AWR1843BOOST的原理图中可以看到整个 BOOST板子上只有2个比较大的…

C++switch陈述

C 使用关键字 switch、case、default对一个常数执行不同的分流,这构成多重选择的结构,形式如下 简单来说,switch后头接一小括弧,小括弧内为一常数运算式,计算出常数值若与其后case的位标(label) 相符,就会执…

Prometheus入门

Prometheus入门 Setup Reference:https://prometheus.io/docs/introduction/overview/ exporters:你可以部署在你想要获取metrics的应用旁,接收Prometheus请求,从应用程序中收集数据并转换为正确的格式,最后返回给Prometheus;Service Dis…

创建百度百科词条要多少钱?看这篇

“百度百科词条人人可编辑,词条创建和修改均为免费,不存在官方及代理商付费代编。” 是的,百度百科免费开放,任何人都可以自己做,但是作为一个给上百家企业和个人创建百度百科词条的专业人士来说,给大家一…

模型预测控制MPC详解(附带案例实现)

模型预测控制MPC详解(附带案例实现) 文章目录 模型预测控制MPC详解(附带案例实现)1. 最优控制问题2. 什么是MPC3. 二次规划Quadratic Programming4. MPC为什么可以转换成QP问题(推导过程)5. MPC总结5.1 MPC…

基于51单片机的篮球计分器设计

一.硬件方案 本设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。该系统具有赛程定时设置、赛程时间暂停、及时刷新甲乙双方的成绩等功能。 电路主要由STC89C52单片机最小系统数码管显示模块数码管驱动模块蜂鸣器模块按键模块; 二.设计功能 &…

哔哩哔哩视频URL解析原理

哔哩哔哩视频URL解析原理 视频网址解析视频的原理通常涉及以下几个步骤: 1、获取视频页面源代码:通过HTTP请求获取视频所在网页的HTML源代码。这一步通常需要处理反爬虫机制,如验证码或用户登录。 2、解析页面源代码:分析HTML源代…

Transformer学习理解

1.前言 本文介绍当下人工智能领域的基石与核心结构模型——Transformer,为什么说它是基石,因为以ChatGPT为代表的聊 天机器人以及各种有望通向AGI(通用人工智能)的道路上均在采用的Transformer。 Transformer也是当下NLP任…

【上海交大】博士生年度进展报告模板

上海交通大学 博士生年度进展报告模板 比较不好找,在交我办中发起申请流程后才能看到链接,链接如下: https://www.gs.sjtu.edu.cn/xzzx/pygl/15

爬取CSDN博文到本地(包含图片,标签等信息)

文章目录 csdnToMD改进将CSDN文章转化为Markdown文档那有什么办法快速得到md文档?例如:获取单个文章markdown获取所有的文章markdown 项目中待解决的问题 csdnToMD 项目原作者:https://gitee.com/liushili888/csdn-is—mark-down 改进后仓库…

Z语言学习——基于通讯案例

目录 1数据类型 2初始状态 3 Alice的消息发送 4 Bob接收与发送消息 5 Alice接收消息 6消息的增删改查 6.1 删除消息 6.2查询消息 6.3修改/增加消息 7定理证明——重要目的 案例背景: (1)构建一个交互式的通讯方案; (2)攻击者控制了所有的通讯…

眼见不一定为实之MySQL中的不可见字符

目录 前言 一、问题的由来 1、需求背景 2、数据表结构 二、定位问题 1、初步的问题 2、编码是否有问题 3、依然回到字符本身 三、深入字符本身 1、回归本质 2、数据库解决之道 3、代码层解决 四、总结 前言 在开始今天的博客内容之前,正在看博客的您先来…

Element-UI实现el-dialog弹框拖拽功能

在实际开发中,会发现有些系统,弹框是可以在浏览器的可见区域自由拖拽的,这极大方便用户的操作。但在查看Element-UI中弹框(el-dialog)组件的文档时,发现并未实现这一功能。不过也无须担心,vue中…

Day 28:2748. 美丽下标对的数目

Leetcode 2748. 美丽下标对的数目 给你一个下标从 0 开始的整数数组 nums 。如果下标对 i、j 满足 0 ≤ i < j < nums.length &#xff0c;如果 nums[i] 的 第一个数字 和 nums[j] 的 最后一个数字 互质 &#xff0c;则认为 nums[i] 和 nums[j] 是一组 美丽下标对 。 返回…

Linux系统之ARP命令的基本使用

Linux系统之ARP命令的基本使用 一、ARP介绍二、ARP命令帮助2.1 ARP的help帮助信息2.2 ARP命令的帮助解释 三、ARP命令的基本使用3.1 查看ARP缓存3.2 显示详细信息3.3 添加静态arp映射3.4 删除指定主机的ARP条目3.5 从文件读取并添加条目3.6 清除ARP缓存 四、注意事项五、总结 一…

wins系统资源监视器任务管理器运行监控CPU、内存、磁盘、网络运行状态

目录 1.Windows系统资源监视器的详细介绍2.通过任务管理器打开资源监视器3.任务管理中总体观察观察cpu、pid、应用程序、I/O次数或者说读写字节数 4.观察CPU观察cpu核心数&#xff0c;以及哪些占用cpu频率过高 5.观察内存观察各个应用占用的内存大小和对应线程 6.观察磁盘活动观…

【前端技巧】css篇

利用counter实现计数器 counter-reset&#xff1a;为计数器设置名称&#xff0c;语法如下&#xff1a; counter-rese: <idntifier><integer>第一个参数为变量名称&#xff0c;第二个参数为初始值&#xff0c;默认为0 counter-increment&#xff1a;设置计数器增…

LabVIEW与3D相机开发高精度表面检测系统

使用LabVIEW与3D相机开发一个高精度表面检测系统。该系统能够实时获取三维图像&#xff0c;进行精细的表面分析&#xff0c;广泛应用于工业质量控制、自动化检测和科学研究等领域。通过真实案例&#xff0c;展示开发过程中的关键步骤、挑战及解决方案&#xff0c;确保系统的高性…