| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 《C++ Primer》第19章 19.4节习题答案 -> 正文阅读 |
|
[C++知识库]《C++ Primer》第19章 19.4节习题答案 |
《C++ Primer》第19章 特殊工具与技术 19.4节 类成员指针 习题答案 练习19.11:普通的数据指针与指向数据成员的指针有何区别? 【出题思路】 通过和普通数据指针做对比,理解成员指针。 【解答】 区别在于:指定指向数据成员的指针的类型时,除了给出成员本身的类型之外,还必须给出所属类的类型。例如:指向int型数据的普通数据指针的类型为int*,而指向C类的int型数据成员的成员指针的类型为int C::*。 练习19.12:定义一个成员指针,令其可以指向Screen类的cursor成员。通过该指针获得Screen::cursor的值。 【出题思路】 本题练习成员指针的定义。 【解答】 指向Screen类cursor成员的成员指针pm可定义如下:
可使用成员指针解引用操作符(.*)从对象或引用获取成员,使用成员指针箭头操作符(->*)通过对象的指针获取成员。 假设有如下对象定义:
则可以这样通过成员指针pm获取Screen::cursor的值:
假设有如下对象指针定义:
则可以这样通过成员指针pm获取Screen::cursor的值:
练习19.13:定义一个类型,使其可以表示指向Sales_data类的bookNo成员的指针。 【出题思路】 成员指针的相关使用练习。 【解答】 Sales_data类的bookNo成员是一个数据成员,其类型为std::string,可以表示Sales_data类的bookNo成员的指针的类型为:
练习19.14:下面的代码合法吗?如果合法,代码的含义是什么?如果不合法,解释原因。
【出题思路】 本题练习成员函数指针的使用。 【解答】 合法。
练习19.15:普通函数指针和指向成员函数的指针有何区别? 【出题思路】 通过与普通函数指针进行对比,熟悉理解成员函数指针。 【解答】 区别在于:指定指向成员函数的指针类型时,除了给出成员本身的类型之外,还必须给出成员函数所属类的类型并指明成员函数是否为const。例如:指向int型数据的普通数据指针的类型为int*,指向“不带参数并返回int型值的函数”的普通函数指针的类型为int(*)(),而指向“C类的不带参数并返回int型值的const成员函数”的函数成员指针的类型为int (C::*)()const。 练习19.16:声明一个类型别名,令其作为指向Sales_data的avg_price成员的指针的同义词。 【出题思路】 本题是成员指针的类型别名定义的练习,方便程序中对含有成员指针代码的读写。 【解答】 Sales_data的avg_price成员是一个函数成员,其原型为:
定义如下类型别名Pt,作为可指向Sales_data的avg_price成员的指针的同义词:
练习19.17:为Screen的所有成员函数类型各定义一个类型别名。 【出题思路】 本题练习成员函数类型别名的定义,方便代码读写。 【解答】 在给出的Screen类版本中,成员函数有4个可区分类型,2个get函数为2个不同类型,home等5个光标移动函数为一个类型,move函数为一个类型。因此可以定义4个类型别名Pmf1、Pmf2、Pmf3和Pmf4:
练习19.18:编写一个函数,使用count_if统计在给定的vector中有多少个空string。 【出题思路】 利用函数对象统计满足条件的对象的个数。 【解答】 首先用mem_fn将string的empty成员函数转换为可调用对象,将它作为第三个参数传递给count_if即可实现统计所有空string(令empty返回真值)的数量。
练习19.19:编写一个函数,令其接受vector<Sales_data>并查找平均价格高于某个值的第一个元素。 【出题思路】 练习用bind将成员函数转换为可调用对象。 【解答】 Sales_data类的成员函数avg_price返回平均价格,但它不能将平均价格与某个值进行比较,因此创建函数check_value,比较avg_price()的返回值和一个给定的值,返回是否平均价格更高。用bind将check_value转换为可调用对象(一元谓词),可调用对象的唯一参数(Sales_data对象引用)作为check_value的第一个参数,用来比较的值作为check_value的第二个参数。
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:31:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |