内联函数
在函数声明前加上关键字inline
在函数定义前加上关键字inline
引用变量
创建引用变量
int rates; int & rodents = rats;
将引用声明为const
使用const可以避免无意中修改数据的编程错误
使用const使函数能够处理const和非const实参,否则将只能接受非const数据
使用const引用使函数能够正确生成并使用临时变量
Note
内联函数不能递归
宏不能按值传递
使用引用参数的原因
能够修改调用函数中的数据对象
通过传递引用而不是整个数据对象,提高程序运行速度
在函数声明前加上关键字inline
在函数定义前加上关键字inline
引用变量
创建引用变量
int rates; int & rodents = rats;
将引用声明为const
使用const可以避免无意中修改数据的编程错误
使用const使函数能够处理const和非const实参,否则将只能接受非const数据
使用const引用使函数能够正确生成并使用临时变量
eg
#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";
system("pause");
return 0;
}
void file_it(ostream & os,double fo,const double fe[],int n)
{
ios_base::fmtflags initial;
initial = os.setf(ios_base::fixed);
os.precision(0);
os<<"Focal length of objective: "<<fo<<" mm\n";
os.setf(ios::showpoint);
os.precision(1);
os.width(12);
os<<"f 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);
}
Note
内联函数不能递归
宏不能按值传递
使用引用参数的原因
能够修改调用函数中的数据对象
通过传递引用而不是整个数据对象,提高程序运行速度