《C++ primer》第七章

c++primer 第七章习题答案 7.7 //2018年8月17日 练习7.7 Sales_data total; if (read(cin, total)) { sales_data trans; while (read(cin, trans)) { if (total.isbn() = trans.isbn()) { total.combine(trans); } else { print(co... 阅读详情

1. 类如何调用其成员函数?

Sale_data是一个类,total是类的实体对象,Sale_data中有成员函数isbn。那么Sale_data在调用isbn成员时传入了total的地址。isbn函数有一个隐式参数this,我们调用isbn这个成员函数时,用请求该函数的对象地址初始化this。

2.类的作用域和成员函数:在类中,如果成员变量在成员函数之后定义,成员函数也是可以使用该成员变量的。因为编译器首先编译成员的声明,之后才编译函数体。

3.类外部定义的成员函数必须与类内部的函数声明相匹配。

4.引入const成员函数

如果一个函数只能够读取它所调用对象的数据成员,而不能够写入,则需要引入const成员函数。

如何把this设置为指向常量的指针?this是隐式的,不会出现在参数列表中。所以将this生命诚指向常量的指针的做法是允许把const关键字放在成员函数的参数列表之后,此时紧跟在参数列表之后的const表示this是一个指向常量的指针,不能改变调用它的对象的内容。

5.构造函数

类通过一个特殊的构造函数来默认初始化过程,叫默认构造函数。默认构造函数没有任何实参。编译器创建的构造函数又被称为合成的默认构造函数。某些类不能依赖于合成的默认构造函数。因为:默认构造函数只适合简单的类;调用默认构造函数可能执行错误;不能为某些类合成默认的构造函数。

如果我们需要默认行为,可以通过在参数列表上写上=default的方式。

6.访问权限控制

类可以在它的第一个访问说明符之前定义成员。这种访问权限依赖于定义类的方式。如果使用struct关键字,则定义第一个访问说明符之前的成员全都是public;如果定义的是class关键字,则这些成员是private。这是struct和public唯一的区别。

7.友元

类可以允许其他类或者函数访问其非公有成员。方法是令其它类或者函数成为它的友元。在函数前声明一个friend关键字就可以将函数声明成为友元。

友元声明只能出现在类定义的内部。一般来说最好是在类开始和结束的时候集中声明友元。

类可以把其他类定义成友元,可以把其他类的成员函数定义成友元。此外,友元函数能够定义在类内部。

基本逻辑是:A类如果允许B类访问自己的成员,那么在A类中应该将B设置成为友元。友元关系不存在传递性。

想要把重载函数声明成为友元,要对这一组重载函数中的每一个函数分别声明。

假设某类内部某友元函数被定义过,但未被声明过,此时类的成员函数是不能够调用该有友元函数的。

8.类类型

一旦一个类名字出现之后,就被认为是声明过了(但尚未定义)。因此类允许包含指向自己的指针。

9.名字查找与函数作用域

类型名的定义一般在函数最开始的地方,这样能够确保所有使用该类型名的成员都出现在定义之后。

10.构造函数的初始值列表

使用初始值列表初始化参数的效率更高,而使用赋值的方式效率会低很多。

11.构造函数的初始值有时必不可少

成员是const、引用或者其他没有提供默认构造函数的类类型的时候,必须通过初始值列表对其进行初始化。

一般来说,初始值列表的成员初始化顺序没什么关系。但是当要使用一个成员初始化另一个成员的时候,需要注意成员的定义顺序。成员的初始化顺序应该和声明顺序保持一致。

12.委托构造函数:在函数的参数列表中写出构造函数。也就是说将该构造函数的某一部分任务委托给另一个构造函数。

13. 默认构造函数:在实际中如果定义了其他构造函数,那么最好也提供一个默认构造函数。

14.隐式类类型转换:如果一个函数只定义了一个实参,那么它实际上定义了转换为此类类型的隐式转换机制。我们把这种构造函数成为转换构造函数。

类类型的转换只允许一步一步转换。

在要求隐式转换的程序的上下文中,我们可以通过explicit关键字加以阻止。关键字explicit只对一个实参的构造函数有效,需要多个实参的构造函数不能用于执行隐式转换。所以无需将这些构造函数指定为explicit的。 explicit是只能在函数里面使用的关键字,函数体外定义时不能重复使用。

使用explicit关键字的构造函数只能用于直接初始化,不能用于赋值初始化。

尽管增加了explicit关键字的函数不能够用于隐式转换过程,但是我们可以将参数显式转换,之后使用该构造函数。比如:

item.combine(Sales_data(null_book));//null_book原本是一个string,Sales_data类中接受string 类
//型参数的构造函数前写了explicit关键字。combine是Sales_data类的一个函数,接受Sales_data类型参 
 //数。在这里我们将null_book强制类型转,然后使用combine函数。

或者使用static_cast<Sales_data>(null_book)的方式进行显式转换也是可以的。

explicit只是使得构造函数不支持隐式类型转换。

15.类的静态成员

直接与类本身相关而不是与某个对象保持关联,此时可以将该成员成名称为静态对象。

静态成员可以类内初始化,可以作为默认实参。

C++ Primer Plus 第六版课后习题答案(第七章) C++ Primer Plus 第六版(第七章)的课后习题答案,在main函数中把题号换掉就可以跑不同的程序,第九题单独在这个文章里: https://blog.youkuaiyun.com/flannery023/article/details/105617355 #include <iostream> using namespace std; double Harmean(doubl... 阅读详情

相关推荐

C++Primer第五版 第七章习题答案(1~10)

1:知识点1:类的定义方法:struct和class两种方法的用法和区别。 知识点2:类内成员的初始化方法:成员初始化列表。编译器会调用构造函数初始化成员,可以被重载。 首先举个例子方便于理解: #include #include #include using namespace std; /* C++ 中保留了C语言的 struct 关键字,并且加以扩充。在C语言中,struct

MISAYAONE的博客 1万+

【C++】《C++ Primer》第七章:类(知识点总结)

《C++ Primer》第六章 关于类的知识点总结,通过例子来讲解知识点。

风的博客 1609

c++primer第五版第7章课后习题答案

c++primer第五版第7章课后习题答案

C++类:构造函数再探之二(隐式的类类型转换、抑制构造函数定义的隐式转换、聚合类、字面值常量类)

前提 ​ 有 Sales_data 类: class Sales_data { // 做友元声明 friend Sales_data add(const Sales_data &,const Sales_data &); friend std::istream& read(std::istream&, Sales_data &); f...

Error Man 的博客 579

Vmware安装windowsServer2022版本

全网最详细的Vmware安装windowsServer2022版本

A乐神的博客 7013

使用PyTorch设计卷积神经网络(CNN)来处理遥感图像Indian Pines数据集

使用PyTorch设计卷积神经网络(CNN)来处理遥感图像Indian Pines数据集

XAX520_1314的博客 2490

C++Primer——第七章(类)

7.1 定义抽象数据类 类背后的基本思想:数据抽象 和 封装。数据抽象:是一种依赖于接口和实现分离的编程技术封装:将类的内部成员 设置成外部不可见,但提供部分接口给外面 类成员: 必须在类的内部声明,不能在其他地方增加成员。 成员可以是数据,函数,类型别名。 类的成员函数: 成员函数的声明 必须在类的内部;成员函数的定义 既可以在类的内部也可以在外部。 对象使用运算符(.)调用成员函数。 默认实参:Sales_item(const std::string &book): ...

杉杉coming! 454

机器人视觉仿真软件:PCL (Point Cloud Library)_(8).点云分割技术

点云分割技术在机器人视觉处理中起着至关重要的作用,通过不同的分割方法可以有效地将点云数据中的不同物体或区域分离出来。PCL提供了丰富的分割算法,包括基于平面的分割、基于聚类的分割、基于模型的分割和基于条件的分割等。每种方法都有其适用的场景和优缺点,选择合适的方法可以显著提高点云处理的效率和准确性。希望本节的内容能够帮助读者更好地理解和应用点云分割技术。

kkchenjj的博客 822

C++ PRIMER 第七章 函数

第七章 函数   7.1 函数的定义   函数由函数名以及一组操作数类型唯一地表示,函数的操作数,即形参,在一对圆括号中声明,形参与形参之间以逗号分隔,函数执行的运算在一个称为函数体的块语句中定义,每一个函数都有一个相关联的返回类型   函数调用:C++语言使用调用操作符(call operator,即一对圆括号)实现函数调用,调用操作符,需要操作数并产生一个结果,调用操作符的操作数...

金色的省略号 253

笔试题-2023-加特兰-数字IC设计【纯净题目版】

笔试题-2023-加特兰-数字IC设计【纯净题目版】

w0shishabi的博客 2248

2026.3.28:langgraph使用mysql进行持久化会话存储(短期记忆和长期记忆)

本文介绍了如何使用MySQL持久化存储LangGraph会话数据(短期和长期记忆)。首先安装必要的依赖包,然后通过Python代码实现将短期记忆写入MySQL数据库。主要步骤包括:1) 建立MySQL连接;2) 创建代理(agent)并配置检查点(checkpointer)和存储(store);3) 实现工具函数如计算器和天气查询;4) 使用中间件跟踪工具和模型调用次数。最后展示了如何从MySQL读取短期记忆数据,完成会话的持久化存储和检索功能。代码示例包含完整的实现细节,包括状态管理、消息处理和数据库操作

拥抱具身智能,昇腾Ascend C 735

C++ primer 第七章 类

7.1 定义抽象数据类型 7.1.1 初探this和 struct Sales_data { string isbn(){return bookNo;} Sales_data & combine(const Sales_data&); double avg_price() const; string bookNo; unsigned units_sold=0; double revenue=0; }; Sales_data total;

weixin_42375706的博客 342

通信原理 | python调制识别数据及代码

数据集包含了从-20dB 到+18dB 总共 20 个信噪比(步长为 2)下的 11 种调制信号, 包括 AM-DSB、 AM-SSB 和 WBFM 三种模拟调制信号,以及 BPSK、 QPSK、 8PSK、 CPFSK、 GFSK、 PAM4、 QAM16 和 QAM64 八种数字调制信号。其中信号的中心频率为 200KHz,采样频率为 1Msamp/s,且每个信噪比下每种调制信号包含 1000 个信号。其中每个信号包含 IQ 两路数据,且每一路数据都包含有 128 个采样点。

若北辰 1758

C++ primer plus (第六版)第七章arrfun3.cpp 代码及解释

如有失误之处,还恳请指教!!! // arrfun3.cpp -- array functions and const #include &lt;iostream&gt; const int Max = 5; // function prototypes //函数原型,返回值为int类型,有两个参数,一个是double类型的数组,一个是int类型。 int fill_array(double a...

weixin_38401090的博客 313

74、光谱成像在电子内窥镜及色彩理论中的应用

本文探讨了光谱成像在电子内窥镜中的应用及其与色彩理论的深度融合。通过分析FICE技术、色彩再现模型及胃黏膜光谱测量,展示了光谱信息在提升医学诊断准确性方面的潜力。同时,系统阐述了颜色的物理属性、标准表示方法、同色异谱现象、颜色测量技术(密度法与比色法)以及CIELAB等均匀颜色空间的构建原理。结合流程图与对比表格,梳理了从光信号获取到颜色处理的完整路径,并展望了人工智能与新型视觉模型在未来医疗成像与色彩科学中的发展方向。

g2h3i4j5的博客 152

科研级YOLOv8 Neck革新:HS-FPN模块赋能,让特征融合更高效且参数量直降100W的实战指南

在文件夹下新建HS_FPN.py,将上述和HS_FPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

FJN110的博客 153

C++ Primer 第七章答案

题目中所要求的所有类的要求如下: Person.h #ifndef _PERSON_H #define _PERSON_H #include <iostream> #include <string> class Person { public: Person(std::string name, std::string address) : name(...

lovely_ke的博客 477

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C++ Primer Plus 第七章总结

C++ Primer Plus 第七章部分易忘的内容归纳一下

Xu__que的博客 541

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

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

《C++ Primer Plus》第七章习题与参考答案

文章目录7.12 复习题7.13 编程练习 1,内容选自《C++ Primer Plus》(第6版)中文版,2017年1月河北第21次印刷版本 2,文章系笔者学习笔记,若有错误,欢迎指正 3,如有雷同,纯属巧合 7.12 复习题 1.使用函数的3个步骤是什么? 2.请创建与下面的描述匹配的函数原型。 a.igor()没有参数,且没有返回值。 b.tofu()接受一个int参数,并返回一个flo...

Heisenberg_Li的博客 2779

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++ primer 第七章笔记总结

看完C++ Primer的第七章,觉得这一章值得被一看再看,现写了一些总结,尽量囊括知识点,但绝不冗余,力求简单易懂。 第七章的题目是 函数 定义: int  add ( int  x, int  y) {} 前面的int为返回参数类型。 add 是函数名,同时也是函数的地址。(这一句很重要) 括号内 是形参表,其中的形参便是在这里定义,在函数调用时进行初始化的。 {}内是函数体。函

绝知此事要躬行 1323

C++ Primer Plus: 第七章 函数

C++ Primer Plus: 第七章 函数 7.1 复习函数的基础知识 为什么需要函数原型: 原型描述了函数到编译器的接口,也就是说,它将函数返回值的类型以及参数的类型和数量告诉编译器。 提高编译效率。若没有函数原型,需要在文件中进行搜索,此时会停止对main()的编译。 若函数原型不在文件中,则会产生错误。 在C++中,不指定参数列表时应使用省略号:void say_bye(…)...

budding0828 227

C++ Primer(第五版) 第七章练习答案

C++ Primer(第五版) 第七章练习答案 目录C++ Primer(第五版) 第七章练习答案7.17.27.37.47.57.67.77.87.97.107.117.127.137.147.157.167.177.187.197.207.217.227.237.247.257.267.277.287.297.307.317.327.337.347.357.367.377.387.397.40.cc7.40.h7.41.cc7.41.h7.427.437.447.457.467.477.487.497.

LGDNSX 672

C++ primer plus (第六版)第七章例题代码及解释

如有失误之处,欢迎大家指正! // calling.cpp -- defining, prototyping, and calling a function // 将包含特定功能(输入输出流函数)的头文件包含进来 #include &amp;amp;lt;iostream&amp;amp;gt; // 函数声明(函数原型),作用是告诉编译器在后面的代码中会有一个这种格式的函数(因为函数的定义在函数调用之后, // 而计算机的执...

weixin_38401090的博客 439

c++ primer plus 第七章习题

C++ primer plus 第七章习题 #include &amp;amp;lt;iostream&amp;amp;gt; using namespace std; float sum(int,int); int main() { int a,b; cout&amp;amp;lt;&amp;amp;lt;&amp;quot;Please enter 2 numbers: \n&amp;quot;; cin

weixin_42365868的博客 335

C++ Primer Plus 第六版课后习题答案(第七章第九题)

为了不破坏原题结构,第九题单独列出来: #include <iostream> using namespace std; const int SLEN = 30; struct student{ char fullname[SLEN]; char hobby[SLEN]; int ooplevel; }; int getinfo(student pa[], ...

flannery023的博客 379

C++ Primer 第七章 答案

C++ Primer 第七章 答案 7.1 Sales_data.h #ifndef SALES_DATA_H #define SALES_DATA_H #include <string> struct Sales_data { std::string isbn() const {return bookNo;} Sales_data& combine(Sales_data&); std::string bookNo; unsigned units_

m0_46223011的博客 364
上一篇: 《c++ primer》第二章 const限定符
下一篇: 牛客网《剑指Offer》编程 17.树的子结构
金让
博客等级 码龄9年 6粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值