C++Primer 习题 第7章

Person.h#ifndef PERSON_H
#define PERSON_H
#include<iostream>
#include<string>
using namespace std;class Person
{public://7.15Person() :pname("无姓名"), paddress("无地址"){}  Person(string &na, string &ad) :pname(na), paddress(ad){}Person(istream &is) { read(is, *this); }//7.5应为const因为成员值未作改变string getname()const { return this->pname; }string getaddress()const { return this->paddress; }//简单的访问修改void changename(const string &na) { this->pname = na; }void changename(istream &is) { is >> this->pname; }void changeaddress(const string &ad) { this->paddress = ad; }void changeaddress(istream &is) { is >> this->paddress; }//7.9istream &read(istream &is, Person &per);ostream &print(ostream &os)const;private:string pname;string paddress;
};#endifPerson.cpp#include"person.h"
istream &Person::read(istream &is, Person &per)
{is >> per.pname >> per.paddress;return is;
}ostream &Person::print(ostream &os)const
{os << "此人姓名:" << this->pname << endl << "此人地址:" << this->paddress << endl;return os;
}main.cpp#include"person.h"ostream &print(ostream &os, Person &per)
{os << "此人姓名:" << per.getname() << endl<< "此人地址:" << per.getaddress() << endl;return os;
}int main()
{Person p;p.print(cout);print(cout,p);Person p2(cin);p2.print(cout);
}
Screen.h#ifndef SCREEN_H
#define SCREEN_H
#include<iostream>
#include<string>
using namespace std;
class Screen        //7.23
{public:using pos = string::size_type;Screen() = default;//7.24Screen(pos h, pos w, char c) :height(h), width(w), contents(h*w, ' '){}Screen(pos h, pos w) :height(h), width(w){}//7.25/*可以依赖默认拷贝赋值函数,因为没有申请堆对象*/
private:pos cursor = 0;pos height = 0;pos width = 0;string contents;
};main.cpp#include"Screen.h"
int main()
{Screen scr;
}
#endif
//7.32
#include<iostream>
#include<string>
using namespace std;
class Window_mgr
{public:void clear();
};
class Screen
{public:using pos = string::size_type;friend void Window_mgr::clear();Screen() = default;      //=delete可以不使用默认构造函数Screen(pos h,pos w,char c):height(h),width(w),contents(h*w,c){}Screen(pos h,pos w):Screen(h,w,'?'){}//7.5.2 C++11的****牛逼****之处,使用构造初始化另一个构造函数//Screen(pos h, pos w) :height(h), width(w), contents(h*w, 'A') {}       //产生二义void changecontents(const string &str) { this->contents = str; }void changecontents(const pos size,const char c=' ') { this->contents = string(size,c); }//这里的const char被初始化了竟然不会出错哦,可以推测先传入的是形参,之后是默认参数奥ostream &print(ostream &os = cout) { os << this->contents << endl; return os; }pos getscreensize()const { return this->height * this->width; }
private:pos height = 0, width = 0;pos cursor = 0;string contents;
};
void Window_mgr::clear()
{/*这有啥用不如全局函数调用,除了能访问私有变量之外,本例题感觉并不适合*/
}
void clear(Screen &scr)
{scr.changecontents(scr.getscreensize(),'#');
}
int main()
{Screen scr(3, 4);scr.print();clear(scr);scr.print();
}

C++Primer 习题 第7章相关推荐

  1. C++primer习题--第1章

    本文地址:http://www.cnblogs.com/archimedes/p/cpp-primer-chapter1-ans.html,转载请注明源地址. [习题 1.3] 编一个程序,在标准输出 ...

  2. C++primer习题--第3章

    [习题 2.11] 编写程序,要求用户输入两个数--底数( base)和指数( exponent),输出底数的指数次方的结果. #include <iostream> #include & ...

  3. 《C++ Primer》第14章 14.3节习题答案

    <C++ Primer>第14章 操作重载与类型转换 14.3节  算术和关系运算符  习题答案 练习14.13:你认为Sales_data类还应该支持哪些其他算术运算符(参见表4.1,第 ...

  4. 《C++ Primer》第9章 9.3节习题答案

    <C++ Primer>第9章 顺序容器 9.3节顺序容器操作习题答案 练习9.18:编写程序,从标准输入读取string序列,存入一个deque中.编写一个循环,用迭代器打印deque中 ...

  5. 《C++ Primer》第15章 15.4节习题答案

    <C++ Primer>第15章 面向对象程序设计 15.4节 抽象基类 习题答案 练习15.15:定义你自己的Disc_quote和Bulk_quote. [出题思路]本题练习实现不同折 ...

  6. 《C++ Primer》第15章 15.2节习题答案

    <C++ Primer>第15章 面向对象程序设计 本章介绍了面向对象程序设计的两个重要概念:继承和动态绑定,包括: □●继承.基类.派生类的基本概念. □●虚函数和虚基类. □●继承中的 ...

  7. 《C++ Primer》第13章 13.5节习题答案

    <C++ Primer>第13章 拷贝控制 13.5节 动态内存管理类 习题答案 练习13.39:编写你自己版本的StrVec,包括自己版本的reserve.capacity(参见9.4节 ...

  8. 《C++ Primer》第12章 12.3节习题答案

    <C++ Primer>第12章 动态内存 12.3节使用标准库:文本查询程序 习题答案 练习12.27:TextQuery和QueryResult类只使用了我们已经介绍过的语言和标准库特 ...

  9. 《C++ Primer》第5章 5.2节习题答案

    <C++ Primer>第5章 语句 5.2节 语句作用域 练习5.4:说明下列例子的含义,如果存在问题,试着修改它. (a)while(string::iterator iter != ...

最新文章

  1. easyUI 相关清空功能
  2. 【CCAI大咖秀】AlphaGo/Mobileye教父:智能科学需要融合机器学习、计算神经科学与认知科学
  3. verilog中数组的定义_systemverilog中的数组操作
  4. 2013年小结及2014年展望
  5. pyrealsense 官方文档 官方doc 官方API(API Architecture 架构)
  6. Unity3D 访问Access数据库
  7. 2015年《大数据》高被引论文Top10文章No.5——对大数据的再认识
  8. Cookie (设置与读取、超时设置、指定路径、显示用户上次登录时间)
  9. HDU 4746 Mophues(莫比乌斯反演)题解
  10. fritzing导入元件_fritzing元件库下载-fritzing传感器元件库v0.9.3 中文版 - 极光下载站...
  11. did拼接屏最小拼缝0.88mm
  12. java接口服务编排_Netflix Conductor : 一个微服务的编排器
  13. 王道考研操作系统复习笔记
  14. zabbix拓扑图添加标签信息(流量)
  15. 调戏 ChatGPT
  16. 3分钟了解今日头条推荐算法原理
  17. ardunio mega2560+esp01实现物联网的数据上行和数据下行
  18. 春秋旅游移动app设计界面
  19. 李政道:只有重视基础研究,才能保持创新能力
  20. centos7配置 console口_7.5. Configuring the Linux Console

热门文章

  1. 网站维护要做哪些工作
  2. 关于Oracle parallel(并行)的几个基本常识
  3. 关于redis服务的代码编码
  4. 11-用杂志拼接信件(蓝桥杯)
  5. Unitimes三周年重磅第二弹 Gitlab中国线上首秀
  6. Hygon C86 7xxx处理器在Windows 10下无法开启虚拟化支持的问题
  7. 深造分布式 打败面试官 招式三 直捣黄龙
  8. 给select里面的option加入背景图片(select美化)
  9. 【Flink实战系列】Flink 本地 Web UI 的配置及使用
  10. Jenkins+GitHub+fir_cli 一行命令从源码到fir im