C++将类对象作为引用类型,在函数中进行使用

注意:

ofstream类是由ostream基类派生而来的,其可以使用基类的格式化方法setf()和precisoin();

以下都用ofstream对象fout进行说明:

打开文件:fout.open(指向文件的指针)

判断文件是否成功打开:fout.is_open()  该返回值为布尔类型

案例代码:

#include<iostream>
#include<fstream>
#include<cstdlib>

using namespace std;

void file_he(ostream& os, double fo, const double fe[], int n);
const int LIMIT = 5;

int main() {
	ofstream fout;
	const char* fn = "数据文件.txt";
	fout.open(fn);//打开该文件
	if (!fout.is_open()) {
		cout << "不能打开文件" << fn << endl;
		exit(EXIT_FAILURE);
	}

	double objective;
	cout << "请输入需要放大的倍数:";
	cin >> objective;

	double eps[LIMIT];
	cout<<"请输入"<<LIMIT<<"个目镜倍数\n";
	for (int i = 0; i < LIMIT; ++i) {
		cout << "目镜" << i + 1 << ":";
		cin >> eps[i];
	}
	file_he(fout, objective, eps, LIMIT);//fout是派生类对象
	file_he(cout, objective, eps, LIMIT);//cout是基类对象
	cout << "结束\n";
	return 0;
}

void file_he(ostream& os, double fo, const double fe[], int n) {
	ios_base::fmtflags initial;//将此时的设置状态存储到initial中
	initial = os.setf(ios_base::fixed);
	os.precision(0);//格式化
	os << "物镜倍数: " << fo << " mm\n";
	os.setf(ios::showpoint);//设置为显示小数点模式,使得小数部分为0
	os.precision(1);//设置显示小数点位数
	os.width(12);//设置下一次输出操作使用的字段宽度
	os << "f.l.目镜";
	os.width(15);
	os << "放大" << 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);//便于恢复到最初的输出设置状态
}

运行结果:

2719ea03859442e1888d678de2abb848.png

 什么时候使用引用?

面对数据对象为数组,则用指针即可

面对数据对象为结构体,则使用指针或引用

面对数据对象为类对象,则使用引用即可

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值