练习7.32:
要想让clear函数作为Screen的友元,只需要在Screen类中做出友元声明即可。本题的真正关键之处是程序的组织结构,我们必须首先定义Window_mgr类,其中声明clear函数,但是不能定义它;接下来定义Screen类,并且在其中指明clear函数是其友元;最后定义clear函数。满足题意的程序如下所示:

#include <iostream>
#include <string>
using namespace std;class Window_mgr {public:void clear();
};class Screen {friend void Window_mgr::clear ();private:unsigned height = 0, width = 0;unsigned cursor = 0;string contents;public:Screen() = default;Screen(unsigned ht, unsigned wd, char c): height(ht), width(wd), contents(ht * wd, c) {};
};void Window_mgr::clear() {Screen myScreen(10, 20, 'X');cout << "清理之前myScreen的内容是:" << endl;cout << myScreen.contents << endl;myScreen.contents = "";cout << "清理之后myScreen的内容是:" << endl;cout << myScreen.contents << endl;
}int main() {Window_mgr w;w.clear();return 0;
}

测试结果:

《C++ Primer》7.3.4节练习相关推荐

  1. C++primer 9.2.1节练习

    练习9.3 迭代器begin和end必须指向相同的容器,end可以与begin指向相同的位置,但不能指向begin之前的位置: 练习9.4 1 #include <iostream> 2 ...

  2. C++primer 10.2.1节练习

    练习10.3 1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include <s ...

  3. C++primer 13.1.6节练习

    练习13.18 1 #include <iostream> 2 #include <string> 3 #include <memory> 4 5 using na ...

  4. 《C++ Primer》10.1节练习

    练习10.1: #include <iostream> #include <vector> #include <algorithm> using namespace ...

  5. 《C++ Primer》14.4节练习(部分)

    练习14.20: class Sales_data {friend Sales_data operator+(const Sales_data &lhs,const Sales_data &a ...

  6. 《C++ Primer》14.3节练习

    练习14.13: 对于Sales_data类,其实我们并不需要再为它添加其他算术运算符.但是这里我们可以考虑为它实现一个减法运算符. class Sales_data {friend Sales_da ...

  7. 《C++ Primer》14.1节练习

    练习14.1: 不同点: 重载操作符必须具有至少一个class或枚举类型的操作数. 重载操作符不保证操作数的求值顺序,例如对&&和||的重载版本不再具有"短路求值" ...

  8. 《C++ Primer》7.4节练习

    练习7.33: 题目代码: pos Screen::size()const {return height*width; } 如果添加如题目所示的size函数将会出现编译错误.因为该函数的返回类型pos ...

  9. 《C++ Primer》7.2节练习

    练习7.16: 在类的定义中,可以包含0个或者多个访问说明符,并且对于某个访问说明符能出现多少次以及能出现在哪里都没有严格规定.每个访问说明符指定接下来的成员的访问级别,有效范围直到出现下一个访问说明 ...

  10. 《C++ Primer》1.51节练习

    练习1.20 #include <iostream> #include "Sales_item.h" using namespace std;int main() {S ...

最新文章

  1. c:redirect标签的使用
  2. GNS3关联SecureCRT的配置。
  3. 用 Flask 来写个轻博客 (26) — 使用 Flask-Celery-Helper 实现异步任务
  4. quagga源码分析--路由信息处理zebra-rib
  5. android int 首位值_Android中数值的精确计算
  6. 计算机考试dw操作题,职称计算机考试Dreamweaver训练题
  7. 京东java开发面经_面经|京东技术中台Java开发面经
  8. java 用properties文件配置spring数据源,用spring的JdbcTemplate的queryForList查数据
  9. 开源的49款Java 网络爬虫软件
  10. JSP 获取Request 经常使用參数
  11. Hibernate 懒加载 Unable to evaluate the expression Method threw ‘org.hibernate.LazyInitializationExcept
  12. 像Selenium爬网页一样爬手机App,可见即可爬——appium 教程(一)appium安装windows版
  13. 大一大学计算机考试考什么,【大学生计算机基础考题】 计算机基础大一考试题...
  14. 最新Chrome插件开发 api 解析
  15. 数学连乘和累加运算符号_数学所有的公式和符号
  16. 刚构桥的优缺点_桥梁钢结构特点及优缺点
  17. 使用Excel对国外B2B电商平台进行描述性数据分析
  18. 18天精读掌握《费曼物理学讲义卷一》 第8天 2019.6.21
  19. 【互联网品读】京东,真的服了,东哥走火入魔了?全员绩效合同
  20. 利用Fiddler手机抓包对ONE APP网页爬虫实现电影资讯微信Java开发

热门文章

  1. 南方方洲号无人测量船系统简介
  2. Android图片上倒计时,Android自定义照相机倒计时拍照
  3. 微信改成右滑删除_手机文件数据恢复,怎样恢复已过期的微信附件呢?
  4. 一篇论文未发博士毕业,中科院最年轻院士入职浙大
  5. 最诡异数学悖论:1+1=1
  6. 史上最严重的忘拿钥匙事件 | 今日最佳
  7. 国庆中秋活动——读完这两套书,宝宝就变小小物理学家了!
  8. Java类集-list
  9. Android 防火墙 知乎,知乎回应:防火墙太“坑爹” 正检查用户隐私是否有泄露...
  10. python色标_在Python中用色标可视化移动速度