C++ Primer Plus学习:第八章 函数探幽(1)

内联函数
  在函数声明前加上关键字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
  内联函数不能递归
  宏不能按值传递
  使用引用参数的原因
    能够修改调用函数中的数据对象
    通过传递引用而不是整个数据对象,提高程序运行速度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值