C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

常用链接

留言簿(8)

搜索

  •  

最新评论

阅读排行榜

评论排行榜


第一个程序
      假设要设计一个名为estimate()的函数,估算编写指定行数的代码所需的时间,并且希望不同的程序员都将使用该函数。对于所有的用户来说,estimate()中一部分代码都是相同的,但该函数允许每个程序员提供自己的算法来估算时间。为实现这种目标,采用的机制是,将程序员要使用的算法函数的地址传递给estimate()。必须能够完成下面的工作:1、获取函数的地址。2、声明一个函数指针。3、使用函数指针来调用函数。
      下面演示了如何使用函数指针。它两次调用estimate()函数,一次传递betsy()函数的地址,另一次则传递pam()函数的地址。在第一种情况下,estimate()使用betsy()计算所需的小时数;在第二种情况下,estimate()使用pam()进行计算。这种设计有助于今后的程序开发。
#include "stdafx.h"
#include 
<iostream>
using namespace std;
double betsy(int);
double pam(int);
// second argument is pointer to a type double function that
// takes a type int argument
void estimate(int lines,double (*pf)(int));
int main(int argc, char* argv[])
{
    
int code;
    cout
<<"How many lines of code do you need? ";
    cin
>>code;
    cout
<<"Here's Betsy's estimate: \n";
    estimate(code, betsy);
    cout
<<"Here's Pam's estimate: \n";
    estimate(code,pam);
    
return 0;
}

double betsy(int lns)
{
    
return 0.05 * lns;
}

double pam(int lns)
{
    
return 0.03 * lns + 0.0004 * lns * lns;
}

void estimate(int lines,double (*pf)(int))
{
    cout
<<lines<<" lines will take ";
    cout
<<(*pf)(lines)<<" hour(s)\n";
}
posted on 2010-02-12 20:44 烟皑 阅读(322) 评论(0)  编辑 收藏 引用 所属分类: C++ primer plus学习笔记

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理