读书笔记-C++PrimerPlus-8.2.6 对象、继承和引用10.2.5 修改实现
来源:互联网 发布:挪威的森林知乎 编辑:程序博客网 时间:2024/06/06 23:30
C++ Prime Plus 随笔-关于显示格式的总结
8.2.6 对象、继承和引用
本例使用一个ostream的例子用来说明了基类引用可以指向派生类并可以使用基类的方法。见代码如下所示:
//filefunc.cpp -- function with ostream & parameter#include <iostream>#include <fstream>#include <cstdlib>using namespace std;void file_it(ostream & os, double fo, const double fe[],int n);const int LIMIT = 5;int main(){ ofstream fout; const char * fn = "ep-data.txt"; fout.open(fn); if (!fout.is_open()) { cout << "Can't open " << fn << ". Bye.\n"; exit(EXIT_FAILURE); } double objective; cout << "Enter the focal length of your " "telescope objective in mm: "; cin >> objective; double eps[LIMIT]; cout << "Enter the focal lengths, in mm, of " << LIMIT << " eyepieces:\n"; for (int i = 0; i < LIMIT; i++) { cout << "Eyepiece #" << i + 1 << ": "; cin >> eps[i]; } file_it(fout, objective, eps, LIMIT); file_it(cout, objective, eps, LIMIT); cout << "Done\n"; // cin.get(); // cin.get(); return 0;}void file_it(ostream & os, double fo, const double fe[],int n){ // save initial formatting state ios_base::fmtflags initial; initial = os.setf(ios_base::fixed, ios_base::floatfield); std::streamsize sz = os.precision(0); os << "Focal length of objective: " << fo << " mm\n"; os.precision(1); os.width(12); os << "f.l. eyepiece"; os.width(15); os << "magnification" << endl; for (int i = 0; i < n; i++) { os.width(12); os << fe[i]; os.width(15); os << int (fo/fe[i] + 0.5) << endl; } // restore initial formatting state os.setf(initial, ios_base::floatfield); os.precision(sz);}
应该注意的是显示的在下一次更改前一直有效。所以这里使用了一个技巧用于保存之前的调用
ios_base::fmtflags initial; initial = os.setf(ios_base::fixed);/*代码块*/ os.setf(initial);
setf()返回调用它之前有效的所有格式化设置,ios_base::fmtflags这种格式可以用来保存所需的信息类型名称。
最后要说明的是每个对象都保存了自己的格式化设置。
10.2.5 修改实现
使用 std::cout.precision(3);
可以实现用定点法表示的三位小数。
同上例可以使用 std::streamsize
类型来定义并储存之前的信息,例如
std::streamsize prec = std:cout.precision(3);/*代码块*/std::cout.precision(prec);
1 0
- 读书笔记-C++PrimerPlus-8.2.6 对象、继承和引用10.2.5 修改实现
- 读书笔记-C++PrimerPlus-CPP流的总结
- 对象继承和引用
- C++PrimerPlus第十章学习笔记——对象和类
- C++PrimerPlus学习之类学习四(类继承)
- <<Effective C++>> 读书笔记6: 继承与面向对象设计
- 读书笔记《Effective C++》条款34:区分接口继承和实现继承
- C++PrimerPlus笔记
- 继承和引用对象练习理解体会
- 类的继承和对象引用
- C++Primer读书笔记(2)-引用和类型
- C++const对象和 引用
- 《JS高级程序设计》第6章读书笔记:对象继承(三)原型式继承和寄生式继承
- 指针和引用修改外部对象
- 【C++PrimerPlus】第10章
- C++PrimerPlus 知识总结一
- C++PrimerPlus第一章学习随笔
- C++:接口继承和实现继承
- maven学习(nexus的安装)
- 就是得还不够
- Hadoop之Map-Reduce
- 查看那个进程占用了80端口
- java中使用字符串或者动态创建对象的三种方法(Class,Constructor,Proxy)
- 读书笔记-C++PrimerPlus-8.2.6 对象、继承和引用10.2.5 修改实现
- java多线程零碎知识点
- UVa 10361 Automatic Poetry
- STL之map操作的几点疑惑
- git学习之旅(四)——回退版本
- 线段树之区间更新
- 机房收费系统之优化一
- 安装Win7操作系统注意事项
- Uber是怎么入侵打车软件市场的