【C++】引用变量--6.对象、继承和引用(核心+难点)
【摘要】 目录
核心概念
下述代码的核心点:
程序示例:
setf()、precision()、width()使用概述
核心概念
ostream和ofstream类凸显了引用的有趣特性!
ofstream对象可以使用ostream类的方法,使得文件输入、输出格式与控制台输入、输出相同!
这是继承的特性!
ostream是基类,ofstream是派生类,派生类可以使...
目录
setf()、precision()、width()使用概述
核心概念
ostream和ofstream类凸显了引用的有趣特性!
ofstream对象可以使用ostream类的方法,使得文件输入、输出格式与控制台输入、输出相同!
这是继承的特性!
ostream是基类,ofstream是派生类,派生类可以使用基类的特性,如precision()和setf()
继承的另一个特性时:基类引用可以指向派生类对象,而无需进行强制类型转换
例如参数类型为ostream & 的函数可以接受ostream对象或者ofstream对象作为参数
下述代码的核心点:
void file_it(ostream & os, double fo, const double fe[], int n)
这里:
file_it( fout, objective, eps, LIMIT );//写入文件中!
file_it( cout, objective, eps, LIMIT );//显示到屏幕上!
程序示例:
-
//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 << "老铁,打不开 " << fn << "。滚吧\n";
-
exit(EXIT_FAILURE);
-
}
-
double objective;
-
cout << "输入一个double的数,单位mm: ";
-
cin >> objective;
-
double eps[LIMIT];
-
cout << "输入" << LIMIT << "个double\n";
-
for (int i = 0; i < LIMIT; i++)
-
{
-
cout << "第 # " << i + 1 << ": ";
-
cin >> eps[i];
-
}
-
file_it(fout, objective, eps, LIMIT);
-
file_it(cout, objective, eps, LIMIT);
-
cout << "老哥,你看OK了\n";
-
return 0;
-
}
-
-
void file_it(ostream & os, double fo, const double fe[], int n)
-
{
-
ios_base::fmtflags initial;
-
initial = os.setf(ios_base::fixed);//save initial formatting state
-
os.precision(0);
-
os << "Focal length of objective: " << fo << "mm\n";
-
os.setf(ios::showpoint);
-
os.precision(1);
-
os.width(12);
-
os << "f.1. 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;
-
}
-
os.setf(initial);
-
}
setf()、precision()、width()使用概述
内容8.2.6
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/91046816
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)